我正在尋找一種簡短的可讀方式來選擇 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
提交
取消