我试图将一个MATLAB程序转换成Python,但遇到了一个问题:我有一个5868x3500矩阵,包含5868个每日观察值,3500只股票的回报率和成交量,这些数据是用来产生一个市场流动性的衡量,每月平均每只股票的回报率超过其数量的比率。我有一个5868x1向量,名为Dummymonth
,它为每个月分配一个从1到270的整数,每个月大约有22个交易日(1,1,1,1,1,1,1,1,1,1,1... 2,2,2,2,2,2... 270,270,270
)。在
我陷入的循环需要将5868x3500矩阵转换为270x3500矩阵,方法是根据Dummymonth值取月平均值(即基本上取每22个值的平均值)。在
我尝试过尽可能清晰地转换代码(用MATLAB的find()
函数代替Python的.argwhere()
),但我对Python(和MATLAB真的)比较陌生,所以代码的问题对我来说不是很明显。在
下面是我要模拟的MATLAB代码部分:
numberofmonth=Dummymonth(size(Ret,1));
i=1;
for di=1:numberofmonth
v=find(Dummymonth==di);
for j=1:size(Ret, 2)
Amihud2(i,j)=nanmean(Amihud1(v,j));
end
i=i+1;
end
下面是我在Python中看到的:
^{pr2}$我经常看到的错误是“索引越界错误”。在
我认为其中一个错误与Python的0索引有关。如果循环某个内容并从1开始,则会丢失第一个(索引0)值。这里有一个解决方案(有很多种):
相关问题 更多 >
编程相关推荐