Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Python2.6不更新我的numpy数组?_Python_Arrays_Numpy_Copy - Fatal编程技术网

为什么Python2.6不更新我的numpy数组?

为什么Python2.6不更新我的numpy数组?,python,arrays,numpy,copy,Python,Arrays,Numpy,Copy,我有一个名为get_gradient的简单函数,它接受一个[[x,y,Vx,Vy]]的numpy数组,并返回(应该返回)一个[[Vx,Vy,Ax,Ay]]数组。我想将我的k[0][0:2]更新为等于[0][2:4]的状态,但当我打印出来时,k永远不会改变值。我创建了一个初始数组的副本,希望它能对其进行排序,但它仍然不起作用!任何帮助都将不胜感激 Y = numpy.array([[0, 0, 0, 0]]) # [x,y,Vx,Vy] k = numpy.ar

我有一个名为get_gradient的简单函数,它接受一个[[x,y,Vx,Vy]]的numpy数组,并返回(应该返回)一个[[Vx,Vy,Ax,Ay]]数组。我想将我的k[0][0:2]更新为等于[0][2:4]的状态,但当我打印出来时,k永远不会改变值。我创建了一个初始数组的副本,希望它能对其进行排序,但它仍然不起作用!任何帮助都将不胜感激

Y          = numpy.array([[0, 0, 0, 0]]) # [x,y,Vx,Vy]
k          = numpy.array([[0, 0, 0, 0]]) # [x,y,Vx,Vy]

def get_gradient(Y):
    state = Y.copy()
    spring_force   = spring.force(state[0], feet_pos[0])
    brownian_force = mass.brownian(dt)
    drag_force     = mass.drag(state[0][2:4])
    total_force    = spring_force + brownian_force + drag_force     #2d array [Fx,Fy]

    k[0][0:2] = state[0][2:4]            ##### DOESN'T WORK!!!
    k[0][2:4] = total_force/mass.mass    ##### but this works :s

    print k[0][0:2]
    print state[0][2:4]

    return k

并不是k没有改变,而是它有一个整数数据类型,所以当您尝试为其分配浮点时,您可能无法得到预期的结果:

>>> k
array([[   0,    0, 4863, 1464]])
>>> k.dtype
dtype('int64')
>>> k[0][0] = 10
>>> k
array([[  10,    0, 4863, 1464]])
>>> k[0][0] = 1e-3
>>> k
array([[   0,    0, 4863, 1464]])

但是:

注意零后面的

我可能会使用

>>> k = numpy.zeros((1,4))
>>> k
array([[ 0.,  0.,  0.,  0.]])

相反;它默认为
float
dtype.

k来自哪里?你得到了什么错误?k是一个numpy数组[[0,0,0,0]],我没有得到错误,代码运行正常。然而,k[0][0:2]从未从0,0更改。当我打印k[0][0:2]和状态[0][2:4]时,它们肯定应该是相同的吗?您能提供一个可运行的示例吗?我无法重现这个问题。(对我来说,
k[0][0:2]
state[0][2:4]
是一样的。)我现在已经添加了完整的代码
>>> f = k.astype(float)
>>> f
array([[    0.,     0.,  4863.,  1464.]])
>>> f[0][0] = 1e-3
>>> f
array([[  1.00000000e-03,   0.00000000e+00,   4.86300000e+03,
          1.46400000e+03]])
>>> k = numpy.zeros((1,4))
>>> k
array([[ 0.,  0.,  0.,  0.]])