Numpy如何将矩阵的一列值与另一个向量赋值



我试图制作一个空的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

相关内容

最新更新