在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
解决方案。