如何在二维数组中找到值的 x 轴和 y 轴索引?
How to find the x-axis and y-axis index of a value in 2-dimensional array?
计算器溢出!关于查找二维数组的索引,我遇到了瓶颈。我试图找到数组中的最小值和 returns 相应的 (x,y) 索引。
我尝试同时使用 np.argmin(a,axis=0)
和 np.argmin(a,axis=1)
分别找到 x 和 y 索引。
import numpy as np
a = ([[3.2, 0, 0.5, 5.8],
[ 6, 1, 6.2, 7.1],
[ 3.8, 5, 2.7, 3.7]])
def axis(a):
x_min = np.argmin(a,axis = 0)
y_min = np.argmax(a,axis = 1)
return x_min,y_min
a1,a2=axis(a)
print('x is ',a1)
print('y is ',a2)
输出应为:x is 0
和 y is 1
,因为零是数组中的最小值。
然而,实际输出是一个整数列表。
获取 minimum/maximum 值的索引
import numpy as np
a =([[-3.2, 0, 0.5, 5.8],
[ 6, 1, 6.2, 7.1],
[ 3.8, 5, 2.7, 3.7]])
xyMin = np.argwhere(a == np.min(a)) #Indices of Minimum
xyMax = np.argwhere(a == np.max(a)) #Indices of Maximum
xIndex = xyMin[0][0] #x-index
yIndex = xyMin[0][1] #y-index
或者您可以使用 .flatten() 将二维数组转换为一维,如下所示
xyMin = np.argwhere(a == np.min(a)).flatten() #Indices of Minimum
xIndex = xyMin[0] #x-index
没有轴的 argmin
是 a
:
的扁平化版本中的位置
In [200]: a =np.array([[-3.2, 0, 0.5, 5.8],
...: [ 6, 1, 6.2, 7.1],
...: [ 3.8, 5, 2.7, 3.7]])
In [201]: np.argmin(a, axis=0)
Out[201]: array([0, 0, 0, 2]) # smallest in each of the 4 columns
In [202]: np.argmin(a, axis=1)
Out[202]: array([0, 1, 2]) # smallest in each of the 3 rows
unravel
可以将其转换为二维索引:
In [203]: np.argmin(a)
Out[203]: 0
In [204]: np.unravel_index(np.argmin(a), a.shape)
Out[204]: (0, 0)
In [205]: np.unravel_index(1, a.shape)
Out[205]: (0, 1)
此用法记录在 argmin
:
Indices of the minimum elements of a N-dimensional array:
>>> ind = np.unravel_index(np.argmin(a, axis=None), a.shape)
>>> ind
(0, 0)
>>> a[ind]
10
计算器溢出!关于查找二维数组的索引,我遇到了瓶颈。我试图找到数组中的最小值和 returns 相应的 (x,y) 索引。
我尝试同时使用 np.argmin(a,axis=0)
和 np.argmin(a,axis=1)
分别找到 x 和 y 索引。
import numpy as np
a = ([[3.2, 0, 0.5, 5.8],
[ 6, 1, 6.2, 7.1],
[ 3.8, 5, 2.7, 3.7]])
def axis(a):
x_min = np.argmin(a,axis = 0)
y_min = np.argmax(a,axis = 1)
return x_min,y_min
a1,a2=axis(a)
print('x is ',a1)
print('y is ',a2)
输出应为:x is 0
和 y is 1
,因为零是数组中的最小值。
然而,实际输出是一个整数列表。
获取 minimum/maximum 值的索引
import numpy as np
a =([[-3.2, 0, 0.5, 5.8],
[ 6, 1, 6.2, 7.1],
[ 3.8, 5, 2.7, 3.7]])
xyMin = np.argwhere(a == np.min(a)) #Indices of Minimum
xyMax = np.argwhere(a == np.max(a)) #Indices of Maximum
xIndex = xyMin[0][0] #x-index
yIndex = xyMin[0][1] #y-index
或者您可以使用 .flatten() 将二维数组转换为一维,如下所示
xyMin = np.argwhere(a == np.min(a)).flatten() #Indices of Minimum
xIndex = xyMin[0] #x-index
argmin
是 a
:
In [200]: a =np.array([[-3.2, 0, 0.5, 5.8],
...: [ 6, 1, 6.2, 7.1],
...: [ 3.8, 5, 2.7, 3.7]])
In [201]: np.argmin(a, axis=0)
Out[201]: array([0, 0, 0, 2]) # smallest in each of the 4 columns
In [202]: np.argmin(a, axis=1)
Out[202]: array([0, 1, 2]) # smallest in each of the 3 rows
unravel
可以将其转换为二维索引:
In [203]: np.argmin(a)
Out[203]: 0
In [204]: np.unravel_index(np.argmin(a), a.shape)
Out[204]: (0, 0)
In [205]: np.unravel_index(1, a.shape)
Out[205]: (0, 1)
此用法记录在 argmin
:
Indices of the minimum elements of a N-dimensional array:
>>> ind = np.unravel_index(np.argmin(a, axis=None), a.shape)
>>> ind
(0, 0)
>>> a[ind]
10