簡體   English   中英

NumPy - 將陣列重塑為1-D

[英]NumPy - reshaping an array to 1-D

我在將NumPy陣列轉換為1-D時遇到問題。 我查看了我在SO上發現的想法,但問題仍然存在。

nu = np.reshape(np.dot(prior.T, randn(d)), -1)
print 'nu1', str(nu.shape)
print nu
nu = nu.ravel()
print 'nu2', str(nu.shape)
print nu
nu = nu.flatten()
print 'nu3', str(nu.shape)
print nu
nu = nu.reshape(d)
print 'nu4', str(nu.shape)
print nu

代碼生成以下輸出:

nu1 (1, 200)
[[-0.0174428  -0.01855013 ... 0.01137508  0.00577147]]
nu2 (1, 200)
[[-0.0174428  -0.01855013 ... 0.01137508  0.00577147]]
nu3 (1, 200)
[[-0.0174428  -0.01855013 ... 0.01137508  0.00577147]]
nu4 (1, 200)
[[-0.0174428  -0.01855013 ... 0.01137508  0.00577147]]

您認為可能是什么問題? 我在做什么錯?

編輯:先前是(200,200),d是200.我想獲得1-D數組:[-0.0174428 -0.01855013 ... 0.01137508 0.00577147]大小(200,)。 d是200。

EDIT2:randn也來自numpy.random(來自numpy.random import randn)

prior是最有可能是np.matrix是的子類ndarray np.matrix總是2D。 所以nu是一個np.matrix ,也是2D。

要使它成為1D ,首先將其轉換為常規的ndarray

nu = np.asarray(nu)

例如,

In [47]: prior = np.matrix(np.random.random((200,200)))

In [48]: d = 200

In [49]: nu = np.reshape(np.dot(prior.T, randn(d)), -1)

In [50]: type(nu)
Out[50]: numpy.matrixlib.defmatrix.matrix

In [51]: nu.shape
Out[51]: (1, 200)

In [52]: nu.ravel().shape
Out[52]: (1, 200)

但是如果你讓nu成為一個ndarray:

In [55]: nu = np.asarray(nu)

In [56]: nu.ravel().shape
Out[56]: (200,)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM