2014-02-13 120 views
2

我有這樣的問題:與numpy.diff問題衍生物

我有7個元素的數組:

vector = [array([ 76.27789424]), array([ 76.06870298]), array([ 75.85016864]), array([ 75.71155968]), array([ 75.16982466]), array([ 73.08832948]), array([ 68.59935515])] 

(此數組是很多操作的結果)

現在我想用numpy.diff(向量)計算衍生物,但我知道該類型必須是一個numpy數組。

爲此,I型:

vector=numpy.array(vector); 

如果我打印的載體,現在的結果是:

[[ 76.27789424] 
[ 76.06870298] 
[ 75.85016864] 
[ 75.71155968] 
[ 75.16982466] 
[ 73.08832948] 
[ 68.59935515]] 

但如果我嘗試計算派生,其結果是[]

你能幫助我嗎?

非常感謝!

+0

你能證明,你是如何計算微分的嗎? – Kamiccolo

+0

der = numpy.diff(vector) – elviuz

回答

1

vector是陣列的列表,以獲得一個1-d NumPy的陣列使用列表理解並把它傳遞給numpy.array

>>> vector = numpy.array([x[0] for x in vector]) 
>>> numpy.diff(vector) 
array([-0.20919126, -0.21853434, -0.13860896, -0.54173502, -2.08149518, 
     -4.48897433]) 
1

矢量= numpy.array(矢量);

給你與七行和一列的二維陣列

>>> vector.shape 
(7, 1) 

形狀讀象:(length axis 0, length axis 1, length axis 2, ...)

正如你可以看到的最後一個軸線是axis 1和它的長度是1

docs

numpy.diff

(A,N = 1,軸= -1
...
軸:整數,可選
的軸,沿着該差被採納,默認是最後一個軸

沒有辦法對單個值進行區分。因此,我們嘗試使用長度爲7的第一個軸。由於軸計數上以零開始,第一軸線是0

>>> np.diff(vector, axis=0) 
array([[-0.20919126], 
     [-0.21853434], 
     [-0.13860896], 
     [-0.54173502], 
     [-2.08149518], 
     [-4.48897433]]) 

注意,衍生物的每一度將一個元件短,從而新的形狀是(7-1, 1)(6, 1)。讓我們驗證

>>> np.diff(vector, axis=0).shape 
(6, 1)