Без ваших файлов я не могу воссоздать ваши расчеты, но могу внести некоторые предложения.
A = wl.iloc[185:196,0]
B = spectre.iloc[185:196, 0 ]
A
и B
теперь серии Панд.
sigma = 2565/8192
mu = A[192]
A_ = np.transpose(np.matrix(A))
np.matrix(A)
создает (1,11) форму matrix
; transpose
меняет это на (11,1). A_ = A.to_numpy()
создаст (11,) ndarray
. A_=np.reshape(A_, (11,1)
сделает это 2d без перегрузки np.matrix
.
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))
N
имеет тот же тип и форму, что и mu_
(и A_
)
print(N*np.power(mu_,2)) # when i print this i got the error.
Какова цель этого умножения? Предполагается, что результат будет (11,1) -элементным продуктом или (1,1) dot
продуктом? В любом случае вам не нужно 2d matrix
.
Я думаю, ваш код можно упростить до:
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