【问题标题】:x and y must have same first dimension, but have shapes (2700,) and (200,)x 和 y 必须具有相同的第一维,但具有 (2700,) 和 (200,) 形状
【发布时间】:2021-07-31 09:43:42
【问题描述】:

我有一个 NumPy 数组 (2,4),我想将它向左旋转 90 度,我使用 np.rot90

例如,如果我的数组是

x = [[5,6,7,8],
     [1,2,3,4]]

当我旋转时,它会是

y = [[8,4],
     [7,3],
     [6,2],
     [5,1]]
                                 

x 是 (2,4) NumPy 数组,y 将是 (4,2)

y = np.rot90(x)

但是当我运行这段代码时,我得到了这个失败

x and y must have the same first dimension, but have shapes (4,) and (2,)

【问题讨论】:

  • 哪一行代码给出了错误信息?如果你删除了赋值前面的y=,然后只执行np.rot90(x),那么错误信息是什么?
  • 我试过你的代码,它返回 y 旋转为例外
  • Actuallt 这不是我真正的数组。我的数组包含像 3.276800000e+04 这样的数字。可能我因此而失败。
  • 请提供minimal reproducible example。您当前的示例似乎没有重现该错误。

标签: python arrays numpy matrix


【解决方案1】:

在计算上不是那么漂亮,但可以工作:

import numpy as np

x = [[5,6,7,8],

     [1,2,3,4]]

​

y = np.zeros((len(x[0]),len(x)), dtype = int)

​

for i,j,k in zip(x[0], x[1], range (0,len(x[0]))):

    y[len(x[0])-1-k] = [i,j]

    np.asmatrix(y)

print (y)

[[8 4],
 [7 3],
 [6 2],
 [5 1]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 2018-12-04
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 2021-07-29
    • 2023-03-24
    相关资源
    最近更新 更多