列表,

我有例如列表中的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

回到顶部