【问题标题】:Convert 1D array into numpy matrix将一维数组转换为 numpy 矩阵
【发布时间】:2013-04-26 11:40:47
【问题描述】:

我有一个简单的一维 Python 数组,其中包含随机数。我想要做的是将其转换为特定形状的 numpy 矩阵。我当前的尝试如下所示:

randomWeights = []
for i in range(80):
    randomWeights.append(random.uniform(-1, 1))
W = np.mat(randomWeights)
W.reshape(8,10)

不幸的是,它总是创建一个如下形式的矩阵:

[[random1, random2, random3, ...]]

所以只有一个维度的第一个元素被使用,reshape 命令没有效果。有没有办法将一维数组转换为矩阵,以便前 x 项将是矩阵的第 1 行,接下来的 x 项将是第 2 行,依此类推?

基本上这将是预期的形状:

[[1, 2, 3, 4, 5, 6, 7, 8],
 [9, 10, 11, ... ,    16],
 [...,               800]]

我想我总是可以通过解析输入数组来手动构建所需形式的新矩阵。但我想知道是否有一个更简单、更优雅的解决方案,其中包含我没有看到的内置功能。如果我必须手动构建这些矩阵,我将在代码的其他区域进行大量额外工作,因为我所有的源数据都来自简单的一维数组,但将被计算为矩阵。

【问题讨论】:

  • 为什么最后一个元素是800,而不是80?
  • 别忘了import random

标签: python numpy


【解决方案1】:

reshape() 没有就地重塑,您需要分配结果:

>>> W = W.reshape(8,10)
>>> W.shape
(8,10)    

【讨论】:

  • 对于预期的 10 x 8 矩阵,应该是 reshape(10,8),顺便说一句
【解决方案2】:

您可以使用W.resize()ndarray.resize()

【讨论】:

    猜你喜欢
    • 2016-02-02
    • 2011-04-18
    • 2018-11-20
    • 2022-10-25
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 2013-06-30
    相关资源
    最近更新 更多