簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM