Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy如何用另一个向量分配矩阵列的值?_Python_Numpy - Fatal编程技术网

Python Numpy如何用另一个向量分配矩阵列的值?

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

我试图创建一个空的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
    的大小为
    3x2
    即它有
    3行和
    2列
  • A[:,1]
    表示
    A
    的所有行和第二列。数组在python中索引为0
  • A[:,1]
    是一个列向量,因此可以将大小为3的任何向量指定给它
  • np.random.rand(3,1)
    返回一个numpy数组(矩阵)或大小
    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