【问题标题】:How to transform 2D array using values as another array's indices?如何使用值作为另一个数组的索引来转换二维数组?
【发布时间】:2022-01-26 12:31:36
【问题描述】:

我有一个二维数组,其索引指向另一个数组:

indexarray = np.array([[0,0,1,1],
                       [1,2,3,0]])

这些索引所指的数组是:

valuearray = np.array([8,7,6,5])

我想得到一个数组,其中包含valuearray 中的数字,形状为indexarray,该数组中的每个项目对应于valuearray 中的值,索引位于indexarray 的同一位置,即:

targetarray = np.array([[8,8,7,7],
                        [7,6,5,8]])

如何在不迭代的情况下做到这一点?


我现在要做的是:

np.apply_along_axis(func1d = lambda row: valuearray[row],axis=0,arr = indexarray)

如果有更简单的方法,我有兴趣。

【问题讨论】:

  • targetarray = valuearray[indexarray.flatten()].reshape(indexarray.shape)
  • 谢谢,这也可以。
  • 如果您愿意,请随时添加它是一个答案。

标签: python numpy


【解决方案1】:

一种方法是展平索引数组并获取值并将其重新整形,如下所示。

targetarray = valuearray[indexarray.flatten()].reshape(indexarray.shape)

【讨论】:

  • 更简单的valuearray[indexarray] 有效吗?
  • 哦,是的。它也可以在没有展平的情况下工作:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 2019-05-22
  • 1970-01-01
  • 2012-04-10
  • 2022-01-05
  • 1970-01-01
相关资源
最近更新 更多