2014-02-13 78 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)