自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
答案 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
它会为您提供数组中最大元素的索引,您可以将其映射到年份。