列表,
我有例如列表中的Python专栏:列表,
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
将沿着新的第一轴连接这些列表。 stack
做了类似的事情(但使用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]])
以上是 列表, 的全部内容, 来源链接: utcz.com/qa/265579.html