将一维数组转换为NumPy矩阵。

17

我有一个简单的一维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, ...]]

所以只有一个维度的第一个元素被使用,重新塑形命令没有效果。有没有一种方法可以将这个一维数组转换为矩阵,使得前x个项目将成为矩阵的第1行,接下来的x个项目将成为第2行,依此类推?

基本上,这将是期望的形状:

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

我想我总是可以通过解析输入数组并手动构建所需形式的新矩阵来完成。但我想知道是否有更简单、更优雅的解决方案,可以使用内置函数实现,而我没有找到。如果必须手动构建这些矩阵,那么在代码的其他区域中将有大量额外工作,因为所有源数据都以简单的一维数组形式出现,但将被计算为矩阵。


为什么最后一个元素中是800而不是80? - MasterControlProgram
不要忘记 import random - MasterControlProgram
2个回答

27

reshape() 不会就地重塑数组,你需要将结果赋值给一个变量:


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

1
顺便提一句,对于预期的10 x 8矩阵应该使用reshape(10,8) - MasterControlProgram

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接