elviuz
elviuz

Reputation: 639

derivative with numpy.diff problems

I have this problem:

I have an array of 7 elements:

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

(this array is the result of a lot of operation)

now I want calculate the derivative with numpy.diff(vector) but I know that the type must be a numpy array.

for this, I type:

vector=numpy.array(vector);

if I print the vector, now, the result is:

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

but If i try to calculate the derivative, the result is [].

Can You help me, please?

Thanks a lot!

Upvotes: 2

Views: 3759

Answers (2)

embert
embert

Reputation: 7592

vector = numpy.array(vector);

gives you a two dimensional array with seven rows and one column

>>> vector.shape
(7, 1)

The shape reads like: (length axis 0, length axis 1, length axis 2, ...)

As you can see the last axis is axis 1 and it's length is 1.

from the docs

numpy.diff(a, n=1, axis=-1)
...
axis : int, optional
The axis along which the difference is taken, default is the last axis.

There is no way to take difference of a single value. So lets try to use the first axis which has a length of 7. Since axis counting starts with zero, the first axis is 0

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

Note that every degree of derivative will be one element shorter so the new shape is (7-1, 1) which is (6, 1). Lets verify that

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

Upvotes: 1

Ashwini Chaudhary
Ashwini Chaudhary

Reputation: 250931

vector is a list of arrays, to get a 1-D NumPy array use a list comprehension and pass it to 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])

Upvotes: 1

Related Questions