我有一個2D numpy的陣列的所有組合如下:numpy的得到的行索引和列索引2D陣列
import numpy as np
foo = np.array([[(i+1)*(j+1) for i in range(10)] for j in range(5)])
#array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
# [ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20],
# [ 3, 6, 9, 12, 15, 18, 21, 24, 27, 30],
# [ 4, 8, 12, 16, 20, 24, 28, 32, 36, 40],
# [ 5, 10, 15, 20, 25, 30, 35, 40, 45, 50]])
我使用創造一些過濾標準np.nonzero:
csum = np.sum(foo,axis=0)
#array([ 15, 30, 45, 60, 75, 90, 105, 120, 135, 150])
rsum = np.sum(foo,axis=1)
#array([ 55, 110, 165, 220, 275])
cfilter = np.nonzero(csum > 80)
#(array([5, 6, 7, 8, 9]),)
rfilter = np.nonzero(rsum < 165)
#(array([0, 1]),)
現在是有一些優雅numpy的切片方法獲取FOO [R,C]爲R的所有組合在CFILTER器Rfilter和c?即我想要得到以下的輸出:
array([[ 6, 7, 8, 9, 10],
[12, 14, 16, 18, 20]])
注:我知道這是很容易做到的基本層面選擇來從陣列,但在更高級的使用情況CFILTER和器Rfilter指數AREN塊不一定緊挨着對方。
非常感謝!
答案選擇,因爲它有一個更快的速度!謝謝 – ejang