我想在字符串数组上使用numpy.where函数。但是,我没有成功。有人能帮我解决这个问题吗?
例如,当我在下面的例子中使用numpy.where
时,我得到一个错误:
import numpy as np
A = ['apple', 'orange', 'apple', 'banana']
arr_index = np.where(A == 'apple',1,0)
我得到了以下结果:
>>> arr_index
array(0)
>>> print A[arr_index]
>>> apple
但是,我想知道字符串数组A
中与字符串'apple'
匹配的索引,在上面的字符串中,这发生在0和2处,但是,np.where
只返回0而不返回2。
那么,如何让numpy.where
处理字符串呢?先谢谢了。
4条答案
按热度按时间1szpjjfi1#
不是
array_index
!!ulydmbyx2#
问题是你需要使用数组而不是列表来正确地使用where(同样,使用True和False而不是1和0来获得一个掩码来查找索引):
这样,您将得到arr_index:n个数组([0,2])
注意,要使用掩码arr_mask或索引arr_index查找A中的值,A必须是一个数组:
如果只使用列表,函数np.where()找不到满足条件的地方,如果尝试:
您将再次获得array(0)作为输出。
at0kjp5o3#
还有另一种方法:
li9yvcax4#
我认为更简单的方法是:
你会得到: