gpt4 book ai didi

python - 沿 numpy 数组中的维度进行回归

转载 作者:太空狗 更新时间:2023-10-29 21:34:45 24 4
gpt4 key购买 nike

我有一个 4 维 numpy 数组 (x,y,z,time) 并且想在每个 x,y,z 处通过时间维度做一个 numpy.polyfit协调。例如:

import numpy as np
n = 10 # size of my x,y,z dimensions
degree = 2 # degree of my polyfit
time_len = 5 # number of time samples

# Make some data
A = np.random.rand(n*n*n*time_len).reshape(n,n,n,time_len)

# An x vector to regress through evenly spaced samples
X = np.arange( time_len )

# A placeholder for the regressions
regressions = np.zeros(n*n*n*(degree+1)).reshape(n,n,n,degree+1)

# Loop over each index in the array (slow!)
for row in range(A.shape[0] ) :
for col in range(A.shape[1] ) :
for slice in range(A.shape[2] ):
fit = np.polyfit( X, A[row,col,slice,:], degree )
regressions[row,col,slice] = fit

我想到达 regressions 数组,而不必经过所有循环。这可能吗?

最佳答案

reshape 您的数据,使每个单独的切片位于二维数组的一列上。然后运行 ​​polyfit 一次。

A2 = A.reshape(time_len, -1)
regressions = np.polyfit(X, A2, degree)
regressions = regressions.reshape(A.shape)

或类似的东西......我不太明白你的数据集中所有维度对应的是什么,所以我不确定你到底想要什么形状。但重点是,polyfit 的每个单独数据集都应占据矩阵 A2 中的一列。

顺便说一下,如果您对性能感兴趣,那么您应该使用配置文件模块或类似的东西来分析您的代码。一般来说,您不能总是仅通过目测就预测代码的运行速度。你必须运行它。尽管在这种情况下,删除循环也会使您的代码可读性提高 100 倍,这一点更为重要。

关于python - 沿 numpy 数组中的维度进行回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19282429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com