矩阵操作:在numpy中减去2D矩阵和3D矩阵

2024-04-26 14:12:20 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有三维矩阵:

cor =: 3 3 3 $ i.5
   cor
0 1 2
3 4 0
1 2 3

4 0 1
2 3 4
0 1 2

3 4 0
1 2 3
4 0 1

以及二维矩阵:

^{pr2}$

用J语言计算非常简单:在符号后加上“2”(按2D矩阵)。在

d -"2 cor
 0  0  0
 0  0  0
 0  0  0

_4  1  1
 1  1 _4
 1  1  1

_3 _3  2
 2  2 _3
_3  2  2

但我还是个新手。。。。在

cor - d 

ValueError: Unable to coerce to Series/DataFrame, dim must be <= 2: (59, 59, 59)

我能用pythonnumpy操作这种矩阵操作吗??在

提前谢谢。在


这是python for循环代码,我想把它改成numpy

def pcor(df):
    cor = df.corr()
    n = df.shape[1] # number of indices 
    pcor = np.empty((n, n, n))
    d = np.empty((n, n, n))
    for x in range(n):
        for y in range(n):
            for m in range(n):
                if x==y:
                    pcor[x,y,m] = float('nan')
                else:
                    pcor[x,y,m] = (cor.iloc[x,y] - cor.iloc[x,m]*cor.iloc[y,m])/((1-cor.iloc[x,m]**2)*(1-cor.iloc[y,m]**2))**(1/2)
                    d[x,y,m] = cor.iloc[x,y] - pcor[x,y,m] # <-- this part!

Tags: toin语言dffornp符号range
1条回答
网友
1楼 · 发布于 2024-04-26 14:12:20

您需要在减法之前将d(当前为(3,3))的形状与cor(当前为(3,3,3))的形状相匹配。尝试cor - d[:None]。这基本上告诉numpy使用现有的d(:)形状,并为最后一个维度(None)创建一个新的轴。在

相关问题 更多 >