ndarray
获取表示二维矩阵的复杂条件成立的所有行的最简单方法是什么?例如,获取所有值都高于 5 或所有值低于 5 的所有行?
谢谢。
您可能知道布尔数组可用于索引,例如:
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]
它只返回符合条件的数组,因此不保留形状。(如果您确实需要保留形状,请查看掩码数组。)
这将为您提供所有值低于或高于 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)]