我试图制作一个空的3x2矩阵,然后将每列替换为随机生成的向量。
因此,我尝试运行以下代码:
import numpy as np
A = np.empty(shape=(3,2))
x1 = np.random.rand(3,1)
x2 = np.random.rand(3,1)
A[:,1] = x1
A[:,2] = x2
然而,当我尝试运行代码时,我得到了以下错误消息:
A[:,1] = x1
ValueError: could not broadcast input array from shape (3,1) into shape (3)
如何修复错误?
谢谢。
这里有几个错误。首先,你试图为切片分配一个更高维度的数组:
A[:,0].shape
# (3,)
x1.shape
#(3, 1)
另一方面,您错误地进行了索引,numpy(以及python(中的索引从位置0
开始。因此,考虑到这些方面,您可以指定为:
A = np.empty(shape=(3,2))
x1 = np.random.rand(3,1)
x2 = np.random.rand(3,1)
A[:,0] = x1.ravel()
A[:,1] = x2.ravel()
A
array([[0.2331048 , 0.2974727 ],
[0.6789782 , 0.9680256 ],
[0.0151457 , 0.05476883]])
或者注意,np.random.rand
可以生成多维数组:
np.random.rand(3,2)
array([[0.10108146, 0.14859229],
[0.55174044, 0.7399697 ],
[0.38104021, 0.32287851]])
A
的大小为3 X 2
,即它有3
行和2
列- CCD_ 7表示CCD_ 8的所有行和第二列。数组在python中索引为0
A[:,1]
是一个列向量,因此您可以将大小为3的任何向量分配给它- CCD_ 10返回numpy数组(矩阵(或大小CCD_。但你想要的是一个向量,即
np.random.rand(3)
A = np.empty(shape=(3,2))
x1 = np.random.rand(3)
x2 = np.random.rand(3)
A[:,0] = x1
A[:,1] = x2