感觉好像已经有一个问题要解决,但我找不到。
在numpy中,假设我有两个数组,A
并且B
,无论两个数组的维数如何,如何确保它们将“正交”广播?例如,我可以这样做:
import numpy as np
A1 = np.zeros((2,2))
A2 = np.zeros((2,2,2))
B = np.ones((2,2))
C1 = A1 + B[...,np.newaxis,np.newaxis]
C2 = A2 + B[...,np.newaxis,np.newaxis,np.newaxis]
print(C1.shape)
print(C2.shape)
这使
(2, 2, 2, 2)
(2, 2, 2, 2, 2)
作为输出。但是为了做到这一点,我必须知道至少一个数组中的维数。有没有办法不知道他们中的任何一个的方法?希望有道理。
调整形状B
以包含尾随的单例尺寸,其中包括A
-
A + B.reshape(B.shape + tuple([1]*A.ndim)) # where A is generic ndarray
其中的某些NumPy ufuncs
hasouter
方法可以处理所有工作。因此,对于添加项,我们可以简单地使用-
np.add.outer(B,A)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句