二维矩阵上的 Numpy where()
Posted
技术标签:
【中文标题】二维矩阵上的 Numpy where()【英文标题】:Numpy where() on a 2D matrix 【发布时间】:2014-08-04 20:53:17 【问题描述】:我有一个这样的矩阵
t = np.array([[1,2,3,'foo'],
[2,3,4,'bar'],
[5,6,7,'hello'],
[8,9,1,'bar']])
我想获取行包含字符串'bar'的索引
在一维数组中
rows = np.where(t == 'bar')
应该给我索引 [0,3],然后是广播:-
results = t[rows]
应该给我正确的行
但我不知道如何让它与二维数组一起使用。
【问题讨论】:
会发生什么?你试过什么? 只是检查一下,这实际上是您创建阵列的方式吗?请注意,您所做的提供了一个 strings 数组。如果你想要字符串和整数的混合,你将有一个记录数组,它的行为会有所不同。 我按照上面的方法做了,我猜这是最小的数据类型 numpy 设法适合这个数组类型。Jaime 的回答虽然我从来没有想过行,cols之前的分离 【参考方案1】:您必须将数组切片到要索引的 col:
rows = np.where(t[:,3] == 'bar')
result = t1[rows]
这会返回:
[[2,3,4,'bar'],
[8,9,1,'bar']]
【讨论】:
【参考方案2】:对于一般情况,您的搜索字符串可以在任何列中,您可以这样做:
>>> rows, cols = np.where(t == 'bar')
>>> t[rows]
array([['2', '3', '4', 'bar'],
['8', '9', '1', 'bar']],
dtype='|S11')
【讨论】:
以上是关于二维矩阵上的 Numpy where()的主要内容,如果未能解决你的问题,请参考以下文章