2013-08-21 68 views
0

寻找一种方法将这些代码存储在python的二维数组中。我已经尝试制作一维数组,然后将其转换为二维数组,但我的代码仍然很繁琐,无法工作。 4和6之间的差距不是拼写错误。任何帮助将不胜感激。创建一个二维python数组来存储数据

recno1inds11 = nonzero(data11[:,1]==no1)[0] 
recno2inds11 = nonzero(data11[:,1]==no2)[0] 
recno3inds11 = nonzero(data11[:,1]==no3)[0] 
recno4inds11 = nonzero(data11[:,1]==no4)[0] 

recno6inds11 = nonzero(data11[:,1]==no6)[0] 
recno7inds11 = nonzero(data11[:,1]==no7)[0] 
recno8inds11 = nonzero(data11[:,1]==no8)[0] 
recno9inds11 = nonzero(data11[:,1]==no9)[0] 
recno10inds11 = nonzero(data11[:,1]==no10)[0] 
recno11inds11 = nonzero(data11[:,1]==no11)[0] 
recno12inds11 = nonzero(data11[:,1]==no12)[0] 
recno13inds11 = nonzero(data11[:,1]==no13)[0] 
recno14inds11 = nonzero(data11[:,1]==no14)[0] 
recno15inds11 = nonzero(data11[:,1]==no15)[0] 
recno16inds11 = nonzero(data11[:,1]==no16)[0] 
recno17inds11 = nonzero(data11[:,1]==no17)[0] 
recno18inds11 = nonzero(data11[:,1]==no18)[0] 
recno19inds11 = nonzero(data11[:,1]==no19)[0] 
recno20inds11 = nonzero(data11[:,1]==no20)[0] 
recno21inds11 = nonzero(data11[:,1]==no21)[0] 
recno22inds11 = nonzero(data11[:,1]==no22)[0] 
recno23inds11 = nonzero(data11[:,1]==no23)[0] 
recno24inds11 = nonzero(data11[:,1]==no24)[0] 
recno25inds11 = nonzero(data11[:,1]==no25)[0] 
recno26inds11 = nonzero(data11[:,1]==no26)[0] 
recno27inds11 = nonzero(data11[:,1]==no27)[0] 
recno28inds11 = nonzero(data11[:,1]==no28)[0] 
recno29inds11 = nonzero(data11[:,1]==no29)[0] 
recno30inds11 = nonzero(data11[:,1]==no30)[0] 

回答

3

通常情况下,你不想有30个这样的单独变量,你想拥有一个30个数值的数组。

如果你有这个,这将是一个单线程;您可能需要将右侧阵列转置到第二个轴上,然后使用==运算符。

>>> data11 = np.array([[1,2,3],[4,5,6],[7,8,9]]) 
>>> data11[:,1] 
array([2, 5, 8]) 
>>> no1to5 = np.array([1, 2, 3, 4, 5]) 
>>> data11[:,1] == no1to5.reshape((5,1)) 
array([[False, False, False], 
     [ True, False, False], 
     [False, False, False], 
     [False, False, False], 
     [False, True, False]], dtype=bool) 

当然,你也可以申请nonzero,抢到第一轴,......无论你想做什么,你可以,只要你有摆在首位的矢量矢量化它,而不是单独的一个大集合值只与变量名称中的元信息相关,而您恰好将它们绑定到这些值。