繁体   English   中英

ValueError:操作数不能与形状一起广播

[英]ValueError: operands could not be broadcast together with shapes

我有一个形状为(6,2)的Numpy数组,

a = array([[1, 2, 3, 3, 2, 1],
           [4, 5, 6, 7, 8, 9]])

我想使用np.power(a, [-6,-8])将数组的每个元素提高到两个不同的幂(-6,-8) 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]]])

权力不是那样的。 根据内置文档,您可以

  1. 将整个数组提升为一个幂,如np.power(a, 3) ,或
  2. np.power(a, b)的不同幂提高一个数组,其中b是形状与a相同的数组,或者
  3. 将一个数组提高到许多幂,如np.power(a, b) ,其中b“至少”具有a的形状,并且额外的维度包含不同的幂(据我所知,无论如何)。 因此,对于您的情况,以下结果也会产生相同的结果:

     >>> 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) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM