我正在使用numpy。我有一個有1列和N行的矩陣,我想用N個元素得到一個數組。Numpy matrix to array
例如,如果我有M = matrix([[1], [2], [3], [4]])
,我想獲得A = array([1,2,3,4])
。我想用A = np.array(M.T)[0]
來實現它。有沒有人知道更優雅的方式來獲得相同的結果?
謝謝!
我正在使用numpy。我有一個有1列和N行的矩陣,我想用N個元素得到一個數組。Numpy matrix to array
例如,如果我有M = matrix([[1], [2], [3], [4]])
,我想獲得A = array([1,2,3,4])
。我想用A = np.array(M.T)[0]
來實現它。有沒有人知道更優雅的方式來獲得相同的結果?
謝謝!
如果您想一些更可讀的,你可以這樣做:等價
A = np.squeeze(np.asarray(M))
,你也可以這樣做:A = np.asarray(M).reshape(-1)
,但是這是一個有點不太容易閱讀。
對我而言,小小的爭吵......爲什麼numpy將數組和矩陣作爲單獨的實體。它是如此unpythonic恕我直言。感謝這個提示@Joe。 – Naijaba 2015-02-13 06:37:47
@Naijaba - 值得的是,矩陣類有效(但不是正式)貶值。它主要是爲了歷史目的。刪除'numpy.matrix'是一個有爭議的問題,但是numpy的開發者非常同意你的觀點,即由於一系列的原因,兩者都是不合理的和煩人的。但是,使用「矩陣」的舊版「無法維護」的代碼很難完全刪除它。 – 2015-02-13 14:03:15
更何況,真正的矩陣乘法僅在Numpy 1.10中添加了數組,並且基本上仍處於測試階段。這意味着很多人(包括我自己)仍然需要使用矩陣而不是陣列來完成我們想要完成的任務。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.matmul.html – 2016-12-31 02:35:45
或者你可以儘量避免與
A = M.view(np.ndarray)
A.shape = -1
A, = np.array(M.T)
一些臨時工取決於你的優雅我想的意思,但多數民衆贊成我會做
你可以嘗試以下的變體:
result=np.array(M).flatten()
result = M.A1
http://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.A1.html#numpy.matrix.A1
matrix.A1
1-d base array
我認爲這個答案比接受的答案,表現明智,簡單 – dariush 2016-05-20 16:34:57
np.array(M).ravel()
如果你關心速度;但是,如果你關心內存:
np.asarray(M).ravel()
首先,Mv = numpy.asarray(M.T)
,它給你一個4X1但二維數組。
然後,執行A = Mv[0,:]
,它給你你想要的。你可以把它們放在一起,如numpy.asarray(M.T)[0,:]
。
這將基質轉換成陣列
A = np.ravel(M).T
Ivnerse問題:[將2D陣列numpy的爲2D numpy的矩陣(http://stackoverflow.com/questions/17443620/convert-a-2d -numpy-array-to-a-2d-numpy-matrix) – 2013-07-03 08:56:54