我正在寻找一种简短的可读方式来选择 2D numpy.ndarray 的一些行,其中每行的第一个数字在某个列表中。例子:>>> index[4, 8]>>> data array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]])所以在这种情况下我只需要 array([[ 4, 5, 6, 7], [8, 9, 10, 11]])因为这些行的第一个数字是 4 和 8,它们在index.基本上我正在寻找类似的东西:data[data[:,0] == i if i in index]这当然不起作用。
2 回答
慕田峪7331174
TA贡献1828条经验 获得超13个赞
您可以使用np.isin来检查,然后像往常一样索引:
idx = [4, 8]
data = np.array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>> data[np.isin(data[:,0], idx)]
array([[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
蓝山帝景
TA贡献1843条经验 获得超7个赞
如果您想使用列表isin推导式,以下是方法(不过,对于这个用例无疑更好):
>>> np.array([e for e in data if e[0] in index])
array([[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
添加回答
举报
0/150
提交
取消