我有这个问题:
我有一个包含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(vector)计算导数,但我知道该类型必须是一个numpy数组。
为此,我输入:
vector=numpy.array(vector);
如果我打印矢量,现在结果是:
[[ 76.27789424]
[ 76.06870298]
[ 75.85016864]
[ 75.71155968]
[ 75.16982466]
[ 73.08832948]
[ 68.59935515]]
但如果我尝试计算导数,则结果为[]
。
你能帮助我吗?
非常感谢!
答案 0 :(得分: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 :(得分:1)
vector = numpy.array(vector);
为您提供一个包含七行一列的二维数组
>>> vector.shape
(7, 1)
形状如下:(length axis 0, length axis 1, length axis 2, ...)
正如您所见,最后一根轴是axis 1
,而长度是1
。
numpy.diff(a,n = 1,轴= -1 )
...
axis:int,可选
取差异的轴,默认为最后一轴。
无法区分单个值。因此,让我们尝试使用长度为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)