[英]Can numpy create n arrays by summing n elements in 1d array to each element of another 1d array?
找不到符合這個確切標准的問題/答案,但如果這是一個重復的問題,那么我會刪除它。 是否有與以下代碼等效的 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]]
顯然,像加法這樣的二元運算不能發出多個數組,但它可以發出一個高維數組,其中包含所有輸出數組作為該高維數組的行或列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.