我想知道如何改变这个矩阵:
[[(2,1)][(3,1)][(3,2)]
[(2,3)][(3,1)]][(11,3)]]
成:
[(2)][3)][3)]
[2][3]][11]]
即,获取构造我的矩阵的元组的第二个元素(从而使其成为常规的标量矩阵)。我想知道如何做到与此相反 - 采用常规矩阵并将其转换为列表或元组矩阵。
答案 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]])