【问题标题】:Casting a vector into a matrix in Python using for-loops使用 for 循环将向量转换为 Python 中的矩阵
【发布时间】:2020-04-01 21:37:51
【问题描述】:

我有一个使用 linspace 创建的长度为 50 的列表:

m=np.linspace(0,10,50)

我可以使用 reshape 将其重铸为 10 X 5 矩阵

X=np.reshape(m,(10,5))

但是,如果我想使用 for 循环来做同样的事情,我会得到一个错误:

z=np.zeros((10,5),dtype=float)
s=0
for i in range(0,10):
    for j in range(0,5):
        m[i][j]=z[s]
        s=s+1

这是错误:

'numpy.float64' 对象不支持项分配

为什么不支持项目分配?

谢谢

【问题讨论】:

  • 变量m是什么?您的代码假定它已经是某种 2D 结构,但您从未定义过它。

标签: python loops matrix vector reshape


【解决方案1】:

z 将在重塑后存储来自m 的物品:

m=np.linspace(0,10,50)

z=np.zeros((10,5),dtype=float)
for i in range(10):
    for j in range(5):
        z[i][j]=m[i * 5 + j]  # compute the index from m base on the current row and column


print(z)

【讨论】:

    【解决方案2】:

    这是一个愚蠢的错误:

    是的,我弄错了尺寸;这就是我重写它的方式:

    m=np.linspace(0,10,50)
    z=np.zeros((10,5),dtype=float)
    s=0
    for i in range(0,10):
        for j in range(0,5):
            z[i][j]=m[s]
            s=s+1
    

    【讨论】:

      猜你喜欢
      • 2018-05-10
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      • 2017-06-10
      • 2021-12-09
      相关资源
      最近更新 更多