繁体   English   中英

如何从两个元组列表创建一个numpy数组,但仅当元组相同时

[英]How to create a numpy array from two lists of tuples, but only when the tuples are the same

为了进行图像分析,我加载了带有scipy imread的浮动图像。

接下来,我用scipys argrelmax搜索轴0和1上的局部最大值,并将结果存储为元组数组。

data = msc.imread(prediction1, 'F')
datarelmax_0 = almax(data, axis = 0)
datarelmax_1 = almax(data, axis = 1)

如何从两个列表中创建一个仅包含两个列表中的元组的numpy数组? 编辑:argrelmax创建一个具有两个数组的元组:

datarelmax_0 = ([1,2,3,4,5],[6,7,8,9,10])
datarelmax_1 = ([11,2,13,14,5], [11,7,13,14,10])

想要创建一个如下的numpy数组:

result_ar[(2,7),(5,10)]

这种“天真”的方式怎么样?

import numpy as np

result = np.array([x for x in datarelmax_0 if x in datarelmax_1])

很简单 通过使用一些numpy方法,也许有更好/更快/更好的方法,但这目前应该可行。

编辑:要回答您编辑的问题,您可以这样做:

result = [x for x in zip(datarelmax_0[0], datarelmax_0[1]) if x in zip(datarelmax_1[0], datarelmax_1[1])]

这给你

result = [(2, 7), (5, 10)]

如果通过使用将其转换为numpy数组

result = np.array(result)

它看起来像这样:

 result = array([[ 2,  7],
                 [ 5, 10]])

如果您对zip的功能感兴趣:

>>> zip(datarelmax_0[0], datarelmax_0[1])
[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]

>>> zip(datarelmax_1[0], datarelmax_1[1])
[(11, 11), (2, 7), (13, 13), (14, 14), (5, 10)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM