以矩阵形式将列表排列为numpy数组

时间:2016-10-25 07:44:15

标签: python arrays numpy

我有一份清单:

rs = list([[(0, 167, 159, 0), (1, 168, 160, 1)], [(0, 167, 159, 1), (1, 168, 160, 0)]])

我希望以矩阵形式将其排列成numpy数组,因此我编写了以下代码:

import numpy

rs = list([[(0, 167, 159, 0), (1, 168, 160, 1)], [(0, 167, 159, 1), (1, 168, 160, 0)]])
k = 2
j = 0
h = 0
ars = []
element = list(rs)
ck_dist_m = numpy.array([[]], ndmin = 2)

while j <= k - 1:
    while h <= k - 1:
        rp = numpy.array(element[j][h][3], ndmin = 2)
        ars.append(rp)
        h = h + 1
    else:
        h = 0
        ck_dist_m = numpy.vstack(ars)
    j = j + 1
print ck_dist_m

我希望结果是:

[[0, 1],
 [1, 0]]

但是上面的脚本给出了这个:

[[0]
 [1]
 [1]
 [0]]

如何编辑脚本以获得矩阵形式的结果?

1 个答案:

答案 0 :(得分:4)

  

在while循环中,我提取子列表中的第三个元素,并尝试以矩阵形式存储它们。

这是实现这一目标的更直接的方法:

>>> numpy.array(rs)[:,:,3]
array([[0, 1],
       [1, 0]])