Numpy:从二维数组中提取数据和坐标

时间:2016-10-28 11:58:37

标签: python arrays numpy matrix

假设:

M = [[1, 2],
     [3, 4]]

N = [[(0,1), (1, 0)],
     [(1,1), (0,0)]]

使用MN,维度2x2。我如何获得元组的列表L,其中每个元组是值的位置与MN的值的组合:

L = [((0,0), (0,1), 1) ...]

L上方的第一个条目,(0,0)M中的位置N以及{{1}中的元组/值(0,1)来自N的值1

我是否需要堆叠MM来创建第三维? N是否有一种干净有效的方法来生成这样的元组列表?

2 个答案:

答案 0 :(得分:1)

使用它:

zip(*[iter(([((row,col),N[row][col],M[row][col]) for row in range(2) for col in range(2)]))]*2)

结果:

[(((0, 0), (0, 1), 1), ((0, 1), (1, 0), 2)),
 (((1, 0), (1, 1), 3), ((1, 1), (0, 0), 4))]

答案 1 :(得分:0)

如果你需要将元组作为矩阵中的单元格,那么使用数组没有多大意义,但无论如何:

[zip(x,y) for x,y in zip(N,M)]

为了完整性'为了得到一个带坐标的平面列表:

indices = array(zip(*ndenumerate(M))[0]).reshape(2,2,2)
x = [res for row in [zip(map(tuple,i),x,y) for i,x,y in zip(indices,N,M)] for res in row]