值错误:形状(11,1)和(11,1)未对齐:1(尺寸1)!=11(尺寸0)

2024-06-02 04:49:34 发布

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

我试图实现一个高斯拟合,我有一个问题,当我试图乘以如下所示的矩阵。 为什么我会出错? 我打印结果只是为了验证这两个矩阵的多重应用,当我这样做的时候,我得到了同样大小的矩阵,并且这些值是正确的。在

有什么帮助吗?在

谢谢

代码

    import numpy as np
    import pandas as pd

    spectre = pd.read_csv('spectre.txt')
    wl = pd.read_csv('longueur_d_onde.txt')
    spectre = spectre -8000
    A = wl.iloc[185:196,0]
    B = spectre.iloc[185:196, 0 ]
    #*******
    sigma = 2565/8192
    mu = A[192]
    A_ = np.transpose(np.matrix(A))
    Mu_ = np.transpose(np.zeros((1,len(A))))
    for i in range(len(A)):
        Mu_[i] = mu

    mu_ = A_-Mu_
    mu_t = np.transpose(mu_)
    for i in range (100):
        #Y = dat/dat[30]
        Y = np.matrix((B/B[192]))
        Yt = np.transpose(Y)
        N = np.exp(-np.power(mu_,2)//(2*sigma**2))
        print(N*np.power(mu_,2)) # when i print this i got the error.

错误

^{pr2}$

Tags: csvimporttxtreadasnp矩阵sigma
2条回答

您可能没有使用预期的矩阵乘法类型。N * np.power(mu_,2))给出了Hadamard积(或元素矩阵乘法)。在

如果你正在寻找真正的矩阵矩阵乘法,你应该使用N.dot(*np.power(mu_,2))或{}

没有你的文件,我不能重新计算你的计算,但我可以提出一些建议。在

A = wl.iloc[185:196,0]
B = spectre.iloc[185:196, 0 ]

A和{}现在是熊猫系列。在

^{pr2}$

np.matrix(A)生成一个(1,11)形状matrixtranspose将其更改为(11,1)。A_ = A.to_numpy()将创建一个(11,)ndarrayA_=np.reshape(A_, (11,1)将在不使用np.matrix重载的情况下使其成为2d。在

Mu_ = np.transpose(np.zeros((1,len(A))))
for i in range(len(A)):
    Mu_[i] = mu

Mu_是(11,1)matrix,所有插槽中都有mu。在

mu_ = A_-Mu_

mu_ = A_-mu也能起到同样的效果。无需制作Mu_mu_将与A_具有相同的类型和形状。在

mu_t = np.transpose(mu_)

无需制作mu_t(形状(1,11))。在

我不明白这个循环是为了什么。在

for i in range (100):
    #Y = dat/dat[30]
    Y = np.matrix((B/B[192]))
    Yt = np.transpose(Y)

同样,Y = (B/B[192]).to_numpy()应该足够了。但是Y在下面没有使用。在

    N = np.exp(-np.power(mu_,2)//(2*sigma**2))

Nmu_(和A_)具有相同的类型和形状

    print(N*np.power(mu_,2)) # when i print this i got the error.

这个乘法的目的是什么?结果应该是(11,1)元素积,还是(1,1)dot积?不管怎样,你都不需要2dmatrix。在

我认为您的代码可以简化为:

A_ = A.to_numpy()    # (11,) shape array
mu_ = A_ - mu
N = np.exp(-np.power(mu_,2)//(2*sigma**2))    # still (11,) shape
N*np.power(mu_,2)          # element-wise multiplication (11,) shape
N@np.power(mu_,2)          # dot product, scalar result

相关问题 更多 >