假设我做了一些计算,每次循环得到一个大小为3乘3的矩阵。假设每次,我想将这样的矩阵保存在较大矩阵的列中,其行数等于9(较小矩阵中的元素总数)。首先,我重塑较小的矩阵,然后尝试将其保存到大矩阵的一列中。只有一列的简单代码如下所示:
import numpy as np
Big = np.zeros((9,3))
Small = np.random.rand(3,3)
Big[:,0]= np.reshape(Small,(9,1))
print Big
但是python引发了以下错误:
大[:,0] = np.reshape(小,(9,1)) ValueError:无法将形状(9,1)的输入数组广播为形状(9)
我也尝试使用flatten,但这也不起作用。有没有办法从小矩阵或任何其他方式创建shape(9)数组来处理此错误?
非常感谢您的帮助!
答案 0 :(得分:1)
尝试:
import numpy as np
Big = np.zeros((9,3))
Small = np.random.rand(3,3)
Big[:,0]= np.reshape(Small,(9,))
print Big
或:
import numpy as np
Big = np.zeros((9,3))
Small = np.random.rand(3,3)
Big[:,0]= Small.reshape((9,1))
print Big
或:
import numpy as np
Big = np.zeros((9,3))
Small = np.random.rand(3,3)
Big[:,[0]]= np.reshape(Small,(9,1))
print Big
这两种情况都让我:
[[ 0.81527817 0. 0. ]
[ 0.4018887 0. 0. ]
[ 0.55423212 0. 0. ]
[ 0.18543227 0. 0. ]
[ 0.3069444 0. 0. ]
[ 0.72315677 0. 0. ]
[ 0.81592963 0. 0. ]
[ 0.63026719 0. 0. ]
[ 0.22529578 0. 0. ]]
您尝试分配的Big
形状为(9, )
一维。您尝试分配的形状为(9, 1)
二维。你需要通过将双暗的np.reshape(Small, (9,1))
变为np.reshape(Small, (9,))
来协调这一点。或者,将one-dim变为两个暗淡Big[:, 0]
到Big[:, [0]]
。例外情况是我指定'Big [:,0] = Small.reshape((9,1))`。在这种情况下,numpy必须检查。