我有numpy ndarray,opencv findContours()的结果。
我想有效地将结果的每个元素从numpy数组转换为元组的元组。
尝试了tolist(),asarray()等,但没有一个给予我确切的结果。
示例
numpy数组:
[[[191 307]]
[[190 308]]
[[181 308]]]
tuple of tuples的缩写:
((191,307),(190,308),(181,308))
更新
tuple(elements[0])
返回
(array([[191 ,307]], dtype=int32),array([[190, 308]], dtype=int32),array([[181,308]], dtype=int32))
3条答案
按热度按时间pkmbmrz71#
vmdwslir2#
你的数组是3d的:
如果你去掉中间的维度,剩下的就很容易被忽略了:
如果它不一定是元组,
tolist
就足够了:0kjbasz63#
我假设这个问题是关于通过解包单元素子数组(
[1]
=>1
,或[[1, 2]]
=>[1, 2]
)将嵌套numpy.array
转换为嵌套tuple
s。我在下面应用了一个递归函数来完成这样的转换,它可以推广到任何大小的可迭代容器。所有4个输入都产生相同的预期输出:res = ((191, 307), (190, 308), (181, 308))
。collections.abc.Collection
确保容器具有以下方法__contains__
,__iter__
,__len__
。