在python中逐个比较2d数组来定义最大值



有人能帮我解决这个问题吗?在此,我真的很感谢您的时间和考虑。我有很多相同大小的二维数组。2d数组是时间序列,每个数组代表一天,例如;

day1=np.array([[4, 5, 6, 8],[9, 5, 3, 5]])
day2=np.array([[6, 0, 0, 1],[6, 1, 8, 1]])
day3=np.array([[5, 2, 7, 9],[4, 3, 7, 7]])
day4=np.array([[1, 0, 0, 7],[4, 7, 7, 3]])

我需要将数组一起比较,并定义每个索引中的最大值和最大值的日期。因此,对于上面的数组(day1、day2、day3、day4),我需要如下两个输出:

highest_values=([[6, 5, 7, 9],[9, 7, 8, 7]])
date=(['day2', 'day1', 'day3', 'day3'],['day1', 'day4', 'day2', 'day3'])

我可以用下面的代码来做。

import numpy as np
namelist=['day1','day2','day3','day4']
arrays=np.array([day1,day2,day3,day4])
highest_values=arrays.max(axis=0) # to get the max values
index_of_max=arrays.argmax(axis=0) # to get the indices of max values
date=np.array([[namelist[j] for j in index_of_max[i]] for i in range(len(index_of_max))]) # I used the name of each array as the date and then assigned it to the indices of the max values

但是我的计算机中保存了数千个大数组,我需要非常大的内存来读取所有文件并运行上面的代码。当我同时为所有文件运行上面的代码时,我得到内存不足错误。我需要一个类似循环的东西,可以读取前两个数组并获取它们的输出(最高值和日期),然后将输出与第三个数组进行比较,并获取新输出,然后将新输出与第四个数组进行比较,等等。

听起来你想要的是

arrays=np.array([day1,day2,day3,day4])
highest_values = day1
for array in arrays:
highest_values = np.array([highest_values,array]).max(axis=0)