Numpy maximum(数组) - 如何确定每个最大值来自的数组

时间:2014-11-13 00:18:31

标签: numpy max

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

numpy.maximum(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

2 个答案:

答案 0 :(得分:1)

答案 argmax,但您需要沿所需的轴执行此操作。如果您有65年的温度,将它们保存在单独的阵列中是没有意义的。

相反,使用类似np.vstack的内容将它们全部放入单个2D维数组中,然后将argmax放在行上。

alltemps = np.vstack((temp1950, temp1951, ..., temp2014))
maxindexes = np.argmax(alltemps, axis=0)

如果您的温度阵列由于某种原因已经是2D,那么您可以使用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个变量名。

答案 1 :(得分:0)

您需要使用Numpy的argmax

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