找不到符合這個確切標準的問題/答案,但如果這是一個重複的問題,那麼我會刪除它。是否有與以下代碼等效的 numpy,還是保留我的代碼原樣/使用 xrange 更好?
x = [i for i in range (50)]
y = [i for i in range (120)]
for i in x:
foo = [i+z for z in y]
print(foo)
這是一個玩具示例,但我正在使用的數據集的範圍可以從這樣的大小到示例中的 1000 倍;我已經嘗試過,np.idter
但沒有看到太多的性能提升,正如我從bmu 的回答中收集到的那樣,使用 range 迭代一個 numpy 數組是最糟糕的。但是我看不到 ufunc 和索引如何重現與上述相同的結果,這是我想要的結果。
這是廣播的經典應用:
import numpy as np
x = np.arange(0,5).reshape(5,1)
y = np.arange(0,12).reshape(1,12)
foos = x + y
print(foos)
[[ 0 1 2 3 4 5 6 7 8 9 10 11]
[ 1 2 3 4 5 6 7 8 9 10 11 12]
[ 2 3 4 5 6 7 8 9 10 11 12 13]
[ 3 4 5 6 7 8 9 10 11 12 13 14]
[ 4 5 6 7 8 9 10 11 12 13 14 15]]
顯然,像加法這樣的二元運算不能發出多個數組,但它可以發出一個高維數組,其中包含所有輸出數組作為該高維數組的行或列。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句