[英]Broadcast operation between arrays of shape (N, M) and (N,)
這是一個相當簡單的問題,但我似乎找不到答案。 考慮兩個簡單的數組:
import numpy as np
a = np.random.uniform(0., 1., (2, 1000))
b = np.random.uniform(0., 1., (2,))
我想要執行操作a - b
以便最終數組為([[a[0] - b[0], a[1] - b[1]])
,我得到
ValueError: operands could not be broadcast together with shapes (2,1000) (2,)
如何執行此(或其他)操作?
根據一般廣播規則 :
在兩個數組上進行操作時,NumPy逐元素比較其形狀。 它從尾隨尺寸開始,一直向前發展。 兩種尺寸兼容
- 它們相等,或者
- 其中之一是1
出現錯誤是因為無法廣播a
(1000)和b
(2)的最后維度; 你可以轉換b
到形狀的2D陣列(2, 1)
使得1
- >(可廣播到) 1000
, 2
- >(可廣播到) 2
:
a - b[:,None]
#array([[ 0.06475683, -0.43773571, -0.62561564, ..., 0.05205518,
# -0.1209487 , 0.16334639],
# [ 0.58443617, 0.28764136, 0.75789299, ..., 0.18159133,
# 0.28548633, -0.12037869]])
要么
a - b.reshape(2,1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.