我有一个Numpy数组形状(6,2),
a = array([[1, 2, 3, 3, 2, 1], [4, 5, 6, 7, 8, 9]])
我想使用 np.power(a, [-6,-8]) 将数组的每个元素提升为两个不同的幂(-6,-8),但这会引发 ValueError: operands could not be broadcast together with shapes . 我怎样才能做到这一点?谢谢!
np.power(a, [-6,-8])
ValueError: operands could not be broadcast together with shapes
你想要得到这个:
>>> a = np.array([[1, 2, 3, 3, 2, 1], [4, 5, 6, 7, 8, 9]], dtype=float) >>> np.array([np.power(a, -6), np.power(a, -8)]) array([[[ 1.00000000e+00, 1.56250000e-02, 1.37174211e-03, 1.37174211e-03, 1.56250000e-02, 1.00000000e+00], [ 2.44140625e-04, 6.40000000e-05, 2.14334705e-05, 8.49985975e-06, 3.81469727e-06, 1.88167642e-06]], [[ 1.00000000e+00, 3.90625000e-03, 1.52415790e-04, 1.52415790e-04, 3.90625000e-03, 1.00000000e+00], [ 1.52587891e-05, 2.56000000e-06, 5.95374181e-07, 1.73466526e-07, 5.96046448e-08, 2.32305731e-08]]])
权力并不是那样的 . 根据内置文档,你也可以
将整个阵列提升为单个幂,如 np.power(a, 3) ,或
np.power(a, 3)
用不同的幂提升一个数组,如 np.power(a, b) ,其中 b 是一个与 a 形状相同的数组,或者
np.power(a, b)
b
a
将一个数组提升到多个幂,如 np.power(a, b) ,其中b的形状为"at least",其中额外的维度包含不同的幂(无论如何,我理解它) . 因此,对于您的情况,以下内容也会产生相同的结果:
>>> b = np.array([-6 * np.ones(a.shape), -8 * np.ones(a.shape)]) >>> b array([[[-6., -6., -6., -6., -6., -6.], [-6., -6., -6., -6., -6., -6.]], [[-8., -8., -8., -8., -8., -8.], [-8., -8., -8., -8., -8., -8.]]]) >>> np.power(a, b)
1 回答
你想要得到这个:
权力并不是那样的 . 根据内置文档,你也可以
将整个阵列提升为单个幂,如
np.power(a, 3)
,或用不同的幂提升一个数组,如
np.power(a, b)
,其中b
是一个与a
形状相同的数组,或者将一个数组提升到多个幂,如
np.power(a, b)
,其中b的形状为"at least",其中额外的维度包含不同的幂(无论如何,我理解它) . 因此,对于您的情况,以下内容也会产生相同的结果: