我有numpy ndarray,这是opencv findContours()的结果。
我想将结果的每个元素从numpy数组有效地转换为元组的元组。
尝试了tolist(),asarray()等,但没有一个给我确切的结果。
示例
numpy数组:
[[[191 307]]
[[190 308]]
[[181 308]]]
到元组的元组:
((191,307),(190,308),(181,308))
更新
tuple(elements[0])
返回
(array([[191 ,307]], dtype=int32),array([[190, 308]], dtype=int32),array([[181,308]], dtype=int32))
答案 0 :(得分:1)
In [9]: a = numpy.array([[[191, 307]],
...: [[190, 308]],
...: [[181, 308]]])
In [10]: tuple(tuple(row[0]) for row in a)
Out[10]: ((191, 307), (190, 308), (181, 308))
答案 1 :(得分:0)
您的数组是3d:
In [356]: a.shape
Out[356]: (3, 1, 2)
如果删除中间尺寸,则很容易迭代其余尺寸:
In [357]: tuple(tuple(i) for i in a[:,0,:])
Out[357]: ((191, 307), (190, 308), (181, 308))
如果不必是元组,那么tolist
就足够了:
In [358]: a[:,0,:].tolist()
Out[358]: [[191, 307], [190, 308], [181, 308]]