gpt4 book ai didi

python - 矩阵操作 : Subtract 2D Matrix and 3D Matrix in numpy

转载 作者:太空宇宙 更新时间:2023-11-04 00:13:56 24 4
gpt4 key购买 nike

如果我有像这样的 3-d 矩阵:

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

和二维矩阵,如:

d  =: 3 3 $ i.5

d
0 1 2
3 4 0
1 2 3

用J语言计算真的很简单:在-号后面加上"2(by 2D matrix)。

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

但我还是一个 NumPy 的新手....

cor - d 

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

无论如何,我可以在 Python Numpy 中操作这种矩阵操作吗??

提前致谢。


这是我想转换成 numpy 的 python for 循环代码

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!

最佳答案

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

关于python - 矩阵操作 : Subtract 2D Matrix and 3D Matrix in numpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51540447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com