Numpy max(数组)——如何确定每个max值来自的数组

Numpy max(数组)——如何确定每个max值来自的数组,numpy,max,Numpy,Max,自1950年以来,我有代表每年七月温度的numpy数组。 我可以使用numpy.max(temp1950、temp1951、temp1952、temp2014) 确定每个电池的最高7月温度。 我需要每个单元格的最大值..numpy.max()仅适用于2个数组 如何确定每个最大值的来源年份 此外,numpy.max(array1,array2)只能比较两个数组 多亏了Praveen,以下功能很好: array1 = numpy.array( ([1,2],[3,4]) ) array2 = n

自1950年以来,我有代表每年七月温度的numpy数组。 我可以使用numpy.max(temp1950、temp1951、temp1952、temp2014) 确定每个电池的最高7月温度。
我需要每个单元格的最大值..numpy.max()仅适用于2个数组 如何确定每个最大值的来源年份

此外,numpy.max(array1,array2)只能比较两个数组

多亏了Praveen,以下功能很好:

array1 = numpy.array( ([1,2],[3,4]) )  
array2 = numpy.array( ([3,4],[1,2]) )
array3 = numpy.array( ([9,1],[1,9]) )

all_arrays = numpy.dstack((array1,array2,array3))
#maxvalues = numpy.maximum(all_arrays)#will not work
all_arrays.max(axis=2) #this returns the max from each cell location
max_indexes = numpy.argmax(all_arrays,axis=2)#this returns correct indexes

您需要使用Numpy的
argmax

它将为您提供数组中最大元素的索引,您可以将其映射到年份。

答案是
argmax
,但您需要沿所需的轴执行此操作。如果你有65年的温度,把它们分开排列是没有意义的

相反,使用类似于
np.vstack
的东西将它们全部放入一个二维数组中,然后在行上取
argmax

alltemps = np.vstack((temp1950, temp1951, ..., temp2014))
maxindexes = np.argmax(alltemps, axis=0)
如果由于某种原因,您的温度阵列已经是二维的,那么您可以使用
np.dstack
进行深度叠加。然后您必须将
argmax
置于
axis=2
上方

对于您问题中的具体示例,您正在寻找以下内容:

t = np.dstack((array1, array2))  # Note the double parantheses. You need to pass
                                 # a tuple to the function
maxindexes = np.argmax(t, axis=2)

PS:如果您要从文件中获取数据,我建议首先将它们放在单个数组中。很难处理65个变量名。

argmax(a,axis=None)沿一个轴的最大值索引…似乎与一个数组a一起工作…我尝试了numpy.argmax(test,test2),其中test,test2是二维数组(每个3行,3列)但这导致只有长度为1的数组才能转换为Python Scalars。我尝试了以下简单示例:array1=numpy.array([1,2],[3,4])array2=numpy.array([3,4],[1,2])maxvalues=numpy.max(array1,array2)all_数组=numpy.vstack((array1,array2))max_index=numpy.argmax(all_数组,axis=0)返回[1]…所有四个单元格[1 1 0 0]都应该有一个索引值,因为这是一个2D数组。所以你需要使用
np.dstack
argmax
覆盖
axis=2
,就像我提到的。谢谢..下面的工作数组1=numpy.array([1,2],[3,4])array2=numpy.array([3,4],[1,2])maxvalues=numpy.max(array1,array2)alldstuarrays=numpy ack((array1,array2))max_index=numpy.arrays([2])看看我最近的编辑。如果您在理解我的答案时遇到困难,可能需要刷新numpy中的1D和2D数组: