如何删除矩阵第三维中某些值的均值?

时间:2018-03-29 17:20:32

标签: python matlab python-3.6

我一直被困在试图用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中执行此操作?

1 个答案:

答案 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
相关问题