我需要将 3 列数组转换为方阵?
I need to convert a 3 column array into a square matrix?
我希望将我的数据转换为方阵:
假设您输入的是一个列表;然后,您可以使用列表理解将其转换为列表列表(即矩阵的代理):
>>> x = [0, 5, 10, 5, 0, 2, 10, 2, 0]
>>> [x[3*k:3*k+3] for k in range(3)]
[[0, 5, 10], [5, 0, 2], [10, 2, 0]]
为了帮助您解析该行:您正在通过从 0 到 2 迭代 k
来构建列表,其中每个元素都是从索引 [=14 开始的 x
的一部分=] 并在索引 3*k+3
处结束。因此,您的列表是 [x[0:3], x[3:6], x[6:9]]
.
也就是说,使用 numpy 来满足所有此类需求要好得多。在那里,你会做:
>>> import numpy as np
>>> x = np.array([0, 5, 10, 5, 0, 2, 10, 2, 0])
>>> x.reshape(3, 3)
array([[ 0, 5, 10],
[ 5, 0, 2],
[10, 2, 0]])
reshape()
函数将您的一维数组转换为请求的二维矩阵。
我希望将我的数据转换为方阵:
假设您输入的是一个列表;然后,您可以使用列表理解将其转换为列表列表(即矩阵的代理):
>>> x = [0, 5, 10, 5, 0, 2, 10, 2, 0]
>>> [x[3*k:3*k+3] for k in range(3)]
[[0, 5, 10], [5, 0, 2], [10, 2, 0]]
为了帮助您解析该行:您正在通过从 0 到 2 迭代 k
来构建列表,其中每个元素都是从索引 [=14 开始的 x
的一部分=] 并在索引 3*k+3
处结束。因此,您的列表是 [x[0:3], x[3:6], x[6:9]]
.
也就是说,使用 numpy 来满足所有此类需求要好得多。在那里,你会做:
>>> import numpy as np
>>> x = np.array([0, 5, 10, 5, 0, 2, 10, 2, 0])
>>> x.reshape(3, 3)
array([[ 0, 5, 10],
[ 5, 0, 2],
[10, 2, 0]])
reshape()
函数将您的一维数组转换为请求的二维矩阵。