我有一个这种形式的numpy数组:
array([['A', 2.2, 9.1],
['A', 7.1, 2.3],
['B', 4.1, 1.1]],dtype=object)
所以我想查询'A'然后返回所有行和列(匹配)字符串'A'。任何与条件不匹配的内容都会被忽略。所以输出应该是:
form = array([['A', 2.2, 9.1],
['A', 7.1, 2.3],dtype=object)
我尝试使用j = form[np.where(form == 'A')]
给出了array(['A', 'A'], dtype=object)
。这不是我想要的。
有人可以告诉我怎么做吗?
答案 0 :(得分:1)
使用np.where()
时可以对数组进行切片,以便只使用第一列:
form = np.array([['A', 2.2, 9.1],
['A', 7.1, 2.3],
['B', 4.1, 1.1]],dtype=object)
j = form[np.where(form[:,0]=='A')]
print (j)
# [['A' 2.2 9.1]
# ['A' 7.1 2.3]]
答案 1 :(得分:1)
您可以避免像这样使用where
:
form = np.array([['A', 2.2, 9.1],
['A', 7.1, 2.3],
['B', 4.1, 1.1]])
print(form[form[:,0] == 'A'])
# [['A' 2.2 9.1]
# ['A' 7.1 2.3]]
答案 2 :(得分:0)
尝试创建列表推导然后在其中我们通过'A'
的长度迭代,然后检查列表中的i
是否是索引为import numpy as np
test = np.array([['A', 2.2, 9.1],
['A', 7.1, 2.3],
['B', 4.1, 1.1]],dtype=object)
print(test[[i for i in range(len(test)) if 'A' in test[i]]])
的元素:
[['A' 2.2 9.1]
['A' 7.1 2.3]]
输出:
{{1}}
答案 3 :(得分:0)
快速而肮脏的方式:
import numpy as np
form = np.array([row for row in form_original if row[0] == "A"])