Python 多个np。其中返回的多个值无法正确访问
运行时:Python 多个np。其中返回的多个值无法正确访问,python,arrays,numpy,tuples,Python,Arrays,Numpy,Tuples,运行时: np.where(vals == min(vals)) 有多个输出,这意味着列表中的最小值出现一次以上。返回值有意义,它是由数组组成的元组: result = (array([0, 2]),) 但是,我尝试访问阵列,然后执行以下操作: result[0] 这将成为输出: [0 2] 这到底是什么[02]??当我说结果[0][1]时,它说索引越界了 In [62]: arr = np.array([2,3,2])
np.where(vals == min(vals))
有多个输出,这意味着列表中的最小值出现一次以上。返回值有意义,它是由数组组成的元组:
result = (array([0, 2]),)
但是,我尝试访问阵列,然后执行以下操作:
result[0]
这将成为输出:
[0 2]
这到底是什么[02]??当我说结果[0][1]时,它说索引越界了
In [62]: arr = np.array([2,3,2])
In [63]: idx = np.where(arr == np.min(arr))
In [64]: idx
Out[64]: (array([0, 2]),)
此元组可直接用于索引arr
,并返回匹配值:
In [65]: arr[idx]
Out[65]: array([2, 2])
argwhere
仅将转置
应用于此元组,将其转换为二维数组:
In [66]: np.argwhere(arr == np.min(arr))
Out[66]:
array([[0],
[2]])
然后,您可以迭代数组的行以获取arr
的单个值:
In [67]: for i in _66:
...: print(arr[i])
...:
[2]
[2]
但我不知道这个迭代什么时候有用。[65]中的索引速度更快
2d示例更有趣:
In [74]: x = np.arange(12).reshape(3,4)
In [75]: x%3
Out[75]:
array([[0, 1, 2, 0],
[1, 2, 0, 1],
[2, 0, 1, 2]])
In [76]: idx = np.where(x%3==0)
In [77]: idx
Out[77]: (array([0, 0, 1, 2]), array([0, 3, 2, 1]))
In [78]: np.argwhere(x%3==0)
Out[78]:
array([[0, 0],
[0, 3],
[1, 2],
[2, 1]])
能否显示
VAL
其中
返回一个元组,即VAL的每个维度一个数组元素
<代码>结果[0]对该元组进行索引,并返回该数组。数组显示[0 1]
。VAL只是一个普通的np数组,类似于[2,3,2]
,它的输出是:(数组([0,2]),)
。但是如果result[0]
是[01]
,我如何迭代返回的result[0]
数组?