【问题标题】:Could not broadcast input array from shape (2,2) into shape (2) [duplicate]无法将输入数组从形状(2,2)广播到形状(2)[重复]
【发布时间】:2020-04-04 04:28:12
【问题描述】:

我不会用numpy.array创建矩阵的矩阵,这个矩阵只需要两个元素,命令是:

numpy.array([m1,m2])

这与矩阵大小无关,除非矩阵的维度为一。 示例:

m1 = numpy.ones((2,2))
m2 = numpy.ones((2,1))
numpy.array([m1,m2])

在这种情况下显示错误...并且矩阵的形状是 (2,2) 和 (2,1) 但出于某种原因,我认为维度 1 是问题所在。 有人知道解决这个问题。谢谢!

【问题讨论】:

  • 数组大小不同,无法制作出整齐的 3d 数组。如果数组在第一个维度上不同,它可以创建一个 (2,) 形状对象 dtype 数组。但是对于相同的第一个维度,np.array 会引发错误。也许你不应该创建这样的数组!
  • 您到底期待什么?你可以不使用np.array 到达那里吗?请记住,对象 dtype 数组比列表好一点,在某些方面更糟。
  • 另一种表达方式 - np.array([m1,m2]) 是制作 (2,) 形状对象 dtype 数组的不可靠方式。更好的 M=np.empty(2, object)M[0]=m1M[1]=m2(或一些变体)。

标签: python arrays numpy


【解决方案1】:

这似乎是一个已知的错误,或者可能只是 numpy.

https://github.com/numpy/numpy/issues/7453

不过,我肯定会质疑为什么这种特殊的安排很有吸引力。
Obv 不适用于矩阵算术运算,因为您的数组具有不同的 nth 维度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2021-03-12
    • 2020-10-06
    • 2020-11-23
    • 2021-08-13
    相关资源
    最近更新 更多