【问题标题】:Numpy: extract data and coordinates from 2-D arraysNumpy:从二维数组中提取数据和坐标
【发布时间】:2016-10-28 11:58:37
【问题描述】:

给定:

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中的第一个条目是MN中的位置(0,0),以及来自N的元组/值(0,1),以及来自@987654336的值1 @。

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

【问题讨论】:

  • N 是 3 维的,这是你的意思吗?
  • 不,N 是一个 2x2 元组数组。
  • 你试过 numpy.ndenumerate 吗?
  • 是的,这使它成为 3d。尝试使用打印 np.array(N).shape 来查看。无论如何,你为什么需要 L 的位置?我的意思是,似乎将 L 保存为一个数组,其中 L[0][0]=((0,1),1) 会更好,而不是保存索引。
  • L 中的元素只是将索引映射到值。如果您已经拥有MN,那么这不是额外信息,因为您可以直接索引MN 而无需存储映射,因此您根本不需要L。你到底想做什么?

标签: python arrays numpy matrix


【解决方案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))]

【讨论】:

  • np.array 有什么不同?这只是list 代码。
  • @hpaulj 实际上在我的代码中我最后使用了列表,但我忘了在这里复制它。我只是总结了我的代码。感谢提及
  • 我想知道 OP 是否真的有数组。 N 看起来更像是一个嵌套列表,np.array 会变成一个 3d 数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
  • 2019-10-21
相关资源
最近更新 更多