摆脱2D元组矩阵中的第二个元素

时间:2017-11-11 00:05:27

标签: python numpy

我想知道如何改变这个矩阵:

 [[(2,1)][(3,1)][(3,2)]
  [(2,3)][(3,1)]][(11,3)]]

成:

[(2)][3)][3)]
  [2][3]][11]]

即,获取构造我的矩阵的元组的第二个元素(从而使其成为常规的标量矩阵)。我想知道如何做到与此相反 - 采用常规矩阵并将其转换为列表或元组矩阵。

2 个答案:

答案 0 :(得分:0)

假设您要删除元组的第二个元素,并且矩阵中元组的长度是常量:

res = [[(y[0],) for y in x] for x in input_array]

答案 1 :(得分:0)

您是否希望将元组保存在嵌套列表的“数组”中,或者使用numpy arrays,而不需要付出一些努力,将元组转换为新的子轴?

首先解决错别字/遗漏

b = [[(2,1)],[(3,1)],[(3,2)],
     [(2,3)],[(3,1)],[(11,3)]]

列出'array'ans :(来自我的评论,v.coder'回答')

[[(y[0],) for y in x] for x in b]

[[(2,)], [(3,)], [(3,)], [(2,)], [(3,)], [(11,)]]

numpy array ans:

a = np.array(b)

a

array([[[ 2,  1]],

       [[ 3,  1]],

       [[ 3,  2]],

       [[ 2,  3]],

       [[ 3,  1]],

       [[11,  3]]])

a.shape

(6, 1, 2)


a[...,0]

array([[ 2],
       [ 3],
       [ 3],
       [ 2],
       [ 3],
       [11]])