假設必須從兩個 1D numpy 陣列 x 和 y 創建一個 2D numpy 陣列。fortran偽代碼如下:
do i = 1, n
do j = 1, m
A[i, j] = x[i]*y[j]
enddo
enddo
在不使用回圈的情況下創建這個二維陣列的最簡單的方法是什么?
uj5u.com熱心網友回復:
numpythonic方法是使用廣播。
如果您的陣列的尺寸基于兩個標準兼容,您可以執行廣播操作。從最右邊的維度開始:
他們是平等的
他們是1。
如果您希望有 length-x 行數,您可以給它一個適當的維度,使用 1,以便通過*操作對其進行廣播:
>>> import numpy as np
>>> x = np.array([1,2,3,4])
>>> y = np.array([10, 11])
>>> print(x[:, None] , y, sep="\n"*2)
[[1]
[2]
[3]
[4]]
[10 11]
>>> x[:, None] * y
array([[10, 11],
[20, 22],
[30, 33],
[40, 44]])
或者使用其他維度(對應切換回圈的順序):
>>> print(x , y[:, None], sep="\n"*2)
[1 2 3 4]
[[10]
[11]]
>>> x * y[:, None]
array([[10, 20, 30, 40],
[11, 22, 33, 44]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497826.html
上一篇:如何通過多個文本檔案迭代坐標轉換
下一篇:多個矩陣的加權和
