首页 > 解决方案 > 将多个元素索引从一个数组应用到另一个数组

问题描述

我需要一些帮助来解决涉及数组的问题。

我已经尝试了堆栈溢出(np.where,sort)的一些主题,但没有找到解决我的情况的方法。

这里是:

我有两个 numpy 对象数组(A 和 B),并且都具有相同的维度(900,900,3)。

数组 A 具有作为字符串重复多次的特定元素,具有在列表中指定的 n 个索引。我需要知道(搜索、收集、详细说明)这些索引并将它们用作参考来对数组 B 数据(整数/浮点数)进行一些计算。

如前所述,数组很大。我可以通过循环或某些功能来做到这一点吗?

标签: pythonarraysnumpyindexing

解决方案


您可以直接使用包含城市的 dtype 对象的 3D 数组来索引您的 3D 浮点数组,例如:

np.sum(numbers[cities == 'New-York'])

例如cities

np.array([[['Berlin', 'Paris'],
           ['New-York', 'Oslo']],

          [['New-York', 'Reykjavik'],
           ['New-York', 'Madrid']]], dtype=object)

并且numbers作为:

np.array([[[0., 1.],
           [2., 3.]],

          [[6., 7.],
           [4., 5.]]])

你会得到12.0

最后,您可以遍历城市以获得不同的总和:

for city in cities.flatten():

    print(city, ': ', np.sum(numbers[cities == city]))

这使:

Berlin: 0
Paris: 1
New-York: 12
Oslo: 3
New-York: 12
Reykjavik: 7
New-York: 12
Madrid: 5

推荐阅读