0

ndarray获取表示二维矩阵的复杂条件成立的所有行的最简单方法是什么?例如,获取所有值都高于 5 或​​所有值低于 5 的所有行?

谢谢。

4

2 回答 2

3

您可能知道布尔数组可用于索引,例如:

import numpy as np
x = np.arange(10)
x2 = x[x<5]

对于布尔数组,np.all让您将其应用于给定轴:

y = np.arange(12).reshape(3,4)

b = y < 6
b1 = np.all(b, axis=0)
b2 = np.all(b, axis=1)

y1 = y[b1]
y2 = y[b2]

它只返回符合条件的数组,因此不保留形状。(如果您确实需要保留形状,请查看掩码数组。)

于 2012-06-21T03:01:48.763 回答
2

这将为您提供所有值低于或高于 5 的行的行索引:

x = numpy.arange(100).reshape(20,5)
numpy.where((x > 5).all(axis=1) ^ (x < 5).all(axis=1))

或更简洁(但不是通过相同的逻辑进行):

numpy.where(((x > 5) ^ (x < 5)).all(axis=1))

要获取数据而不是索引,请直接使用布尔结果:

x[((x > 5) ^ (x < 5)).all(axis=1)]
于 2012-06-22T13:58:49.583 回答