我一直被困在试图用numpy这样做而没有运气。我试图从MATLAB转向Python,但转换并不那么容易。无论如何,这没关系。
我正在尝试编写这个简单的MATLAB代码行的Python模拟代码:
A(:,:,condtype==1 & Mat(:,9)==contra(ii)) = A(:,:, condtype ==1 & Mat(:,9)==contra(ii))-mean(A(:,:, condtype ==1 & Mat(:,9)==contra(ii)),3);
是的,所以上述复杂的代码行执行以下操作。索引条件是A的第三维的一半,并删除那些同时将A中的值更改为新的平均移除值的索引的平均值。
如何在Python中执行此操作?
答案 0 :(得分:0)
我实际上已经明白了。我试图使用,当我应该使用np.isequal。此外,我需要使用keepdims=True
作为平均值。这是任何想要看到的人:
def RmContrastMean(targettype,trialsMat,Contrastlvls,dX):
present = targettype==1
absent = targettype==0
for i in range(0,Contrastlvls.size):
CurrentContrast = trialsMat[:,8]==Contrastlvls[i]
preIdx = np.equal(present, CurrentContrast)
absIdx = np.equal(absent, CurrentContrast)
#mean
dX[:,:,preIdx] = dX[:,:,preIdx]-np.mean(dX[:,:,preIdx],axis=2,keepdims=True)
dX[:,:,absIdx] = dX[:,:,absIdx]-np.mean(dX[:,:,absIdx],axis=2,keepdims=True)
#std
dX[:,:,preIdx] = dX[:,:,preIdx]/np.std(dX[:,:,preIdx],axis=2,keepdims=True)
dX[:,:,absIdx] = dX[:,:,absIdx]/np.std(dX[:,:,absIdx],axis=2,keepdims=True)
return dX