Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据一维数组获取二维numpy数组的索引_Python_Arrays_Numpy - Fatal编程技术网

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

Python 根据一维数组获取二维numpy数组的索引,python,arrays,numpy,Python,Arrays,Numpy,我正在使用numpy阵列,我遇到了一个障碍,也许你能帮我。所以我有一个2D numpy数组,这个2D数组中的每个数组都有一个最大值,我需要的是得到最大值的索引,而不是2D数组的索引,相反,像使用1D数组一样使用索引,我知道我可以使用numpy.argmax来查找索引,但是它根据的是2D数组而不是1D数组,也许举个例子更好: import numpy as np arr = np.array([[512, 523, 491], [512, 531, 495]

我正在使用numpy阵列,我遇到了一个障碍,也许你能帮我。所以我有一个2D numpy数组,这个2D数组中的每个数组都有一个最大值,我需要的是得到最大值的索引,而不是2D数组的索引,相反,像使用1D数组一样使用索引,我知道我可以使用
numpy.argmax
来查找索引,但是它根据的是2D数组而不是1D数组,也许举个例子更好:

import numpy as np

arr =  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
我的意思是它做了它应该做的,但是如果我需要索引,就像它是一个1D数组一样呢?这是我想要的输出:

index = [1, 4] 

第一个最大值是523,第一个索引是1,第二个最大值是531,第二个索引是4,就像一维数组一样。也许这是一个新手问题,但我不确定如何做到这一点,这只是一个例子,
arr
数组可以更大,因此,任何帮助都将不胜感激,谢谢

我认为最简单的方法就是在索引中添加一个偏移量

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

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

我认为最简单的方法是将偏移量添加到索引中

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

对于上下文,np.arange接受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]

第一行实际上是你想要的。它返回每个嵌套数组中最大值的索引,即
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]

如果知道二维阵列的尺寸,可以向每个元素添加偏移

e、 g


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

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

e、 g


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

哦,我现在看到了!非常感谢。哦,我现在看到了!非常感谢。哦,是的,我现在明白了!非常感谢。哦,是的,我现在明白了!非常感谢。