【发布时间】:2022-01-17 07:29:39
【问题描述】:
我有两个一维数组,它们给出了 x 和 y 的值范围——例如:
x = np.array([0,1,2])
y = np.array([8,9])
我还有一个对应的二维数组,它给出了与每个可能的 (x,y) 组合相关的 z 值——例如:
z = np.array([['A','B'],
['C','D'],
['E','F']])
注意在这个例子中 z 是一个 3x2 数组,每一行对应一个给定的 x 值,每列对应一个给定的 y 值(顺序对于这个映射很重要)。
我想要的是将这 3 个数组组合成一个坐标值对的一维列表——例如:
result = [(0,8,'A'),
(0,9,'B'),
(1,8,'C'),
(1,9,'D'),
(2,8,'E'),
(2,9,'F')]
使用 for 循环绝对有一种蛮力的方法,但是使用预先存在的 numpy 或 python 例程是否有更简单/更快的方法?我的猜测是它可能涉及 np.meshgrid()、zip() 或 itertools,但我无法弄清楚。任何帮助将不胜感激!
【问题讨论】:
-
由于你想要一个元组列表,你不能使用“直接”
numpy方法(这会产生一个具有统一 dtype 的多维数组)。np.ndenumerate(z)很简单,虽然不能自定义索引。
标签: python numpy indexing tuples itertools