[英]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.