numpy可以通過將一維數組中的n個元素與另一個一維數組的每個元素相加來創建n個數組嗎?

找不到符合這個確切標準的問題/答案,但如果這是一個重複的問題,那麼我會刪除它。是否有與以下代碼等效的 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章