如果第一个值大于该列中的最后一个值,那么从NumPy
数组中删除列的有效方法是什么。假设我有b
:
>>> import numpy as np
>>> b = np.arange(9).reshape(3,3)
>>> b[0,0] = 9
>>> b
array([[9, 1, 2],
[3, 4, 5],
[6, 7, 8]])
自b[0,0] > b[-1,0]
以来,您希望删除第一列并实际留下:
array([[1, 2],
[4, 5],
[7, 8]])
这是一种有效的方法吗?我已经看到它用行完成了,用符号表示:
b[np.logical_not(np.logical_and(b[:,0] > 20, b[:,0] < 25))]
但不是列。此外,如果可以避免转置,那肯定会更好,因为我想在大型数据集上使用它。
答案 0 :(得分:3)
只需使用逻辑索引:
new_b = b[:, b[0,:]<=b[-1,:]]