为什么 np.zeros(3) 和 np.zeros((3,1)) 在 python 中的维度不同?
Why np.zeros(3) and np.zeros((3,1)) are of different dimensions in python?
我正在尝试为 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)
(为什么这个区分有用)?
他们有不同的尺寸是正常的。第一个只有 1 个由 3 个零组成的数组,第二个有 3 个数组,每个数组由 1 个零组成。
如果您在示例中打印 Mu[0]
,您将得到一个列表 [0.]
,而如果您在使用 np.zeros(3)
定义它之后打印 Mu[0]
,您将得到0.0
我可以想到这种区分很有用的情况,尤其是在使用机器学习中的功能时。如果我有一系列大小为 1 的特征,我想使用维度 [n,1] 而不是 [n],因为这有助于模型(比方说 LSTM)在序列大小和特征大小之间产生差异。
我正在尝试为 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)
(为什么这个区分有用)?
他们有不同的尺寸是正常的。第一个只有 1 个由 3 个零组成的数组,第二个有 3 个数组,每个数组由 1 个零组成。
如果您在示例中打印 Mu[0]
,您将得到一个列表 [0.]
,而如果您在使用 np.zeros(3)
定义它之后打印 Mu[0]
,您将得到0.0
我可以想到这种区分很有用的情况,尤其是在使用机器学习中的功能时。如果我有一系列大小为 1 的特征,我想使用维度 [n,1] 而不是 [n],因为这有助于模型(比方说 LSTM)在序列大小和特征大小之间产生差异。