Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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中以列的形式列出_Python_Numpy - Fatal编程技术网

在python中以列的形式列出

在python中以列的形式列出,python,numpy,Python,Numpy,我有一个清单,例如: x = [1,2,3,4,5] 我想把它转换成一个矩阵,看起来是这样的: mat = [ 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 ] 所以矩阵中的每一列都是列表 有没有一种简单的方法可以使用numpy或普通python实现这一点 谢谢也许你需要重复一遍,即 n = 3 # No of repetition np.repeat(np.array(x),n).resh

我有一个清单,例如:

x = [1,2,3,4,5]
我想把它转换成一个矩阵,看起来是这样的:

mat = [ 1  1  1 
        2  2  2
        3  3  3
        4  4  4
        5  5  5 ]
所以矩阵中的每一列都是列表

有没有一种简单的方法可以使用numpy或普通python实现这一点


谢谢

也许你需要重复一遍,即

n = 3 # No of repetition 
np.repeat(np.array(x),n).reshape(-1,n) 

array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5]])
没有任何模块

a = [1, 2, 3, 4, 5]
n = 3
b = [[x] * n for x in a]
print(b)
让我们使用np.tile:

 import numpy as np
 arr = np.array(x)
 np.tile(arr,3).reshape(5,3, order='F')
输出:

array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5]])
另一个阵列选项:

In [248]: np.stack([a]*3,axis=1)
Out[248]: 
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5]])
您需要注意列表复制:

In [250]: b=[a]*3
In [251]: b[0][0]=30
In [252]: b
Out[252]: [[30, 2, 3, 4, 5], [30, 2, 3, 4, 5], [30, 2, 3, 4, 5]]
# a is also changed
它复制指针,而不是值。数组堆栈生成一个副本

np.array
将沿着新的第一个轴连接这些列表<代码>堆栈执行类似的操作(但使用
np.concatenate
),并允许我们在新的第二个轴上连接它们

In [255]: np.array(b)
Out[255]: 
array([[30,  2,  3,  4,  5],
       [30,  2,  3,  4,  5],
       [30,  2,  3,  4,  5]])

您如何知道列数?是列数始终为3???
y=[[v代表范围内的i(列)]代表x中的v]
,其中
列数是列数,在您的情况下为3。不是一个
numpy
解决方案。