为了账号安全,请及时绑定邮箱和手机立即绑定

根据一维数组获取二维 numpy 数组的索引

根据一维数组获取二维 numpy 数组的索引

HUH函数 2023-05-23 14:40:01
我正在使用 numpy 数组我遇到了障碍,也许你可以帮助我。所以我有一个二维 numpy 数组,这个二维数组中的每个数组都有一个最大值,我需要的是获取最大值的索引而不是二维数组的索引,而是像使用一维数组一样使用索引,我知道我可以用它numpy.argmax来查找索引,但索引是根据二维数组而不是一维数组,也许一个例子会更好:import numpy as nparr =  np.array([[512, 523, 491],                  [512, 531, 495]])index = np.argmax(arr, axis = 1)index2 = np.argmax(arr)print(index)print(index2) index = [1, 1] index2 = 4我的意思是它做了它应该做的事情,但是如果我需要像一维数组一样的索引怎么办?这是我想要的输出:index = [1, 4] 所以第一个最大值是 523,所以第一个索引是 1,第二个最大值是 531,所以第二个索引是 4,就像它是一维数组一样。也许这是一个新手问题,但我不确定该怎么做,这只是一个例子,数组arr可以更大,所以,任何帮助将不胜感激,谢谢!
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

我能想到的最简单的事情就是为索引添加一个偏移量。

offset = np.arange(0,arr.shape[0]*arr.shape[1], arr.shape[1])
index1D = offset + index

对于上下文,np.arange 有 3 个参数:开始、停止和步幅。所以偏移量只是将特定行之前的元素总数添加到索引中。


查看完整回答
反对 回复 2023-05-23
?
交互式爱情

TA贡献1712条经验 获得超3个赞

第一行实际上是你想要的。它返回每个嵌套数组中最大值的索引,即531在第二个嵌套数组的索引 1 中。

您可以将其与高级索引一起使用

>>> print(arr[np.arange(arr.shape[0]), index])
[523, 531]

或者将索引更改为平面索引

flat_index = index + np.arange(0, arr.size, arr.shape[1])
# flat_index == [1, 4]


查看完整回答
反对 回复 2023-05-23
?
心有法竹

TA贡献1866条经验 获得超5个赞

如果您知道二维数组的维度,则可以为每个元素添加偏移量。


例如


index = [1, 1]

offset = [0, 3]


index + offset

>>> [1, 4]

您可以通过执行很容易地获得偏移量np.arange(len(index))*size。其中 size 是二维数组的宽度。


查看完整回答
反对 回复 2023-05-23
  • 3 回答
  • 0 关注
  • 238 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信