我正在导入2-D矩阵数据,在5年一次的数据集上进行多年气候时间序列测试。我已经创建了一个for循环,将2D矩阵数据按年份导入一系列5个不同大小的数组(15003600)。我将矩阵时间序列数据附加到一个单独的组合(515003600)数组中,其中每年都是数组中的一维。然后我运行np平均值以及np.标准创建(15003600)矩阵,计算每个矩阵点数据的5年平均值和标准偏差。代码如下。当我测试这个时,数字看起来是正确的,但是我想知道。。在
有没有更快的方法?我最终将需要在一个(6570、1500、3600)阵列上构建和运行的18个时间跨度内对每日数据运行这种类型的分析。有什么建议吗?我对Python还比较陌生,仍然能找到自己的路。在
StartYear=2009
EndYear=2014
for x in range(StartYear, EndYear):
name = "/dir/climate_variable" + str(x) + ".gz"
Q_WBM = rg.grid(name)
Q_WBM.Load()
q_wbm = Q_WBM.Data # .flatten()
q_wbm[np.isnan(q_wbm)] = 0
if x == StartYear:
QTS_array = q_wbm
else:
QTS_array = np.append(QTS_array, q_wbm, axis=0)
DischargeMEAN = np.mean(QTS_array, axis=0)
DischargeSTD = np.std(QTS_array, axis=0)
与
list.append
不同,它是摊销的O(1)numpy.append
几乎是O(n),这意味着你的循环是O(n^2),用在你的整个问题上没有任何乐趣。在除此之外,
6570 x 1500 x 3600 x itemsize
实际上相当大,除非你有很多这样的内存,否则它无法放入内存中。在如果你想要的是mean和SD,那么你可以通过动态总结来回避这两个问题。你可以用类似的东西来替换代码的结尾
相关问题 更多 >
编程相关推荐