积累阶段
在脚本中,相同大小的数据矩阵X
由某个模型(此处仅为随机数生成器(RNG((重新估计,并在有限数量的试验t
的过程中累积/保存在矩阵Y
中。
import numpy as np
from numpy.random import random
import pandas as pd
k = 3 #shape
t = 5 #trials
Y = np.zeros((t,k,k))
for i in range(5):
X = random((k,k)) #2D estimate
X = pd.DataFrame(X)
Y[i,:,:] = X #3D tensor
还原阶段
然后,我如何将三维Y
张量内所有累积的二维X
阵列按元素归约为与X
形状相同的单个二维矩阵Z
?一个示例性减少是减少为Z
:的所有单个X
元素的平均值
Z[0,0] = average of: {the first Z[0,0], second Z[0,0], ... , fifth Z[0,0]}
如果可能的话,我不希望有逐元素的循环。我使用numpy数组展示了累积阶段,因为我不认为Panda DataFrame可以是3d张量,仅限于2d输入,但算术归约阶段
这就是您想要的吗?
玩具示例:
test = np.arange(12).reshape(-1,2,3)
array([[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]]])
解决方案
np.apply_over_axes(np.mean,test,0).reshape(test.shape[1],test.shape[2])
array([[3., 4., 5.],
[6., 7., 8.]])
IIRC我认为你是对的,pandas
不能真正处理三维张量,除非你处理多索引,所以我个人宁愿先在numpy
中处理这个操作,然后将其转换为dataframe
。您可以通过to_numpy()
将dataframe
s转换为numpy。