我正在嘗試為在 python 中共同正常的三個隨機變數生成 N 個資料點。如果我使用以下代碼:
import numpy as np
import scipy
import pandas
import sys
from scipy.linalg import block_diag
from pandas import *
N=100
Sigma=np.identity(3)
Mu=np.zeros((3,1))
Z=np.random.multivariate_normal(Mu, Sigma, N)
我收到以下錯誤訊息:
in <module>
Z=np.random.multivariate_normal(Mu, Sigma, N)
File "mtrand.pyx", line 4067, in numpy.random.mtrand.RandomState.multivariate_normal
ValueError: mean must be 1 dimensional
這意味著 的維度np.zeros((3,1))不是1。將行更改Mu=np.zeros((3,1))為 后Mu=np.zeros(3),它起作用了。這意味著它np.zeros(3)是1維度的。
由于np.zeros(3)和np.zeros((3,1))都是三個零的陣列,我猜自然兩者都應該是一維的。Mu.ndim在每種情況下使用,我發現的維度np.zeros(3)是一,維度np.zeros((3,1))是二。我的問題是:
為什么Python中加以區分np.zeros((3,1)),并np.zeros(3)就其尺寸(這是為什么區別有用)?
uj5u.com熱心網友回復:
它們具有不同的尺寸是正常的。第一個只有 1 個由 3 個零組成的陣列,第二個有 3 個陣列,每個陣列由 1 個零組成。
如果你Mu[0]在你的例子中列印,你會得到一個串列[0.],如果你Mu[0]在使用np.zeros(3)定義它之后列印,你會得到0.0
我可以想到這種區別很有用的情況,尤其是在使用機器學習中的功能時。如果我有一個大小為 1 的特征序列,我想使用維度 [n,1] 而不是 [n],因為這有助于模型(假設 LSTM)區分序列大小和特征大小。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/396609.html
