Python Numpy如何用另一个向量分配矩阵列的值?
我试图创建一个空的3x2矩阵,然后将每列替换为随机生成的向量 因此,我尝试运行以下代码:Python Numpy如何用另一个向量分配矩阵列的值?,python,numpy,Python,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 a
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
即它有3x2
3行和
2列
表示A[:,1]
的所有行和第二列。数组在python中索引为0A
是一个列向量,因此可以将大小为3的任何向量指定给它A[:,1]
返回一个numpy数组(矩阵)或大小np.random.rand(3,1)
。但是你想要的是一个向量,即3x1
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