获取表示2d矩阵的ndarray
的复杂条件所有行的最简单方法是什么?例如得到所有值都高于5的所有行或者所有值都低于5?
感谢。
答案 0 :(得分: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]
它只返回符合条件的数组,因此不保留形状。 (如果确实需要保留形状,请查看屏蔽数组。)
答案 1 :(得分: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)]