如果我有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(通过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)
反正我可以在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!
答案 0 :(得分:2)
在减去之前,需要将d的形状(当前为(3,3))与cor的形状(当前为(3,3,3))匹配。尝试<mat-button-toggle-group [(ngModel)]="selectedValue" (change)="takeSelectedValue(selectedValue)">
<mat-button-toggle *ngFor="let number of numbers" value="{{number+1}}">
<span>{{number + 1}}</span>
</mat-button-toggle>
</mat-button-toggle-group>
。这基本上告诉numpy使用d(cor - d[:None]
)的现有形状并为最后一个尺寸(:
)创建一个新轴。