我有一個形狀為 (20,1200) 例如 24000 像素的 2d numpy 陣列,其值為 0 和 1。我想迭代 (4,60) 塊并求和每個塊的百分比,意思是 - ((number_of_ones)/240)*100。結果應該被注入到一個新的 numpy 表 (5X20) 中,因為每個單元格代表原始表中的 (4X60)。目前,我正在使用 2 個嵌套的 for 回圈,但這需要時間而不是最佳實踐。
final_seg = []
for i in range(0, 20, 4):
for j in range(0, 1200, 60):
# slice segment from table
data = big_table[i:i 4, j:j 60]
n_zeros = np.count_nonzero(data == 1)
final_seg.append((n_zeros/240) * 100)
return final_seg
numpy 命令的等價物是什么?
uj5u.com熱心網友回復:
相當高效的解決方案是創建初始陣列塊的臨時 4 維視圖并應用于np.count_nonzero其兩個軸:
window = (4, 60)
shape = (big_table.shape[0]//window[0], window[0], big_table.shape[1]//window[1], window[1])
out = np.count_nonzero(big_table.reshape(shape), axis=(1, 3))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/400546.html
