Python 循环二维数组,若值为true,则追加到空数组中
我试图循环遍历数组的第二列,找出==1的每个值,然后将第一列中的对应值存储到新数组中Python 循环二维数组,若值为true,则追加到空数组中,python,arrays,Python,Arrays,我试图循环遍历数组的第二列,找出==1的每个值,然后将第一列中的对应值存储到新数组中 array1 = [] array2 = ([10,0], [11,0], [12,1], [13,1], [14,0]) 我想做的是 for i in array2: if array2[:,1] == 1: array1[:,1] = array2[:,1] 但这给了我一个错误 ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all() 因此,理论上
array1 = []
array2 = ([10,0], [11,0], [12,1], [13,1], [14,0])
我想做的是
for i in array2:
if array2[:,1] == 1:
array1[:,1] = array2[:,1]
但这给了我一个错误
ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()
因此,理论上,我应该得到如下结果:
array1 = [12, 13]
我成功地获得了与以下内容匹配的索引值,但无法为列找到它
array1 = np.array([i for i, row in enumerate(array2[:,1]) if row ==1])
首先,你的问题是非常误导的,因为你没有提到NumPy,但这是你所使用的基于错误消息 让我们从实际使用的类型的示例输入开始,它是一个NumPy数组:
array2 = np.array([[10,0], [11,0], [12,1], [13,1], [14,0]])
然后,解决方案是:
array2[array2[:,1] == 1, 0]
这使得:
array([12, 13])
使用NumPy数组时,应始终避免使用
for
循环。在数据上循环速度很慢,以矢量形式进行循环速度很快。首先,您的问题极易误导,因为您没有提到NumPy,但这正是基于您收到的错误消息而使用的
让我们从实际使用的类型的示例输入开始,它是一个NumPy数组:
array2 = np.array([[10,0], [11,0], [12,1], [13,1], [14,0]])
然后,解决方案是:
array2[array2[:,1] == 1, 0]
这使得:
array([12, 13])
使用NumPy数组时,应始终避免使用
for
循环。在数据上循环很慢,以向量形式进行循环很快。我认为问题在于数组2[:,1]==1。尝试打印array2[:,1]
,您会发现它是一个数组,而不是标量。我想你想做的是if-array2[I,1]==1
你在哪里使用I
我想问题是if-array2[:,1]==1
。尝试打印array2[:,1]
,您会发现它是一个数组,而不是标量。我想你想做的是if array2[I,1]==1
在这里你使用I