为什么Numpy.gradient返回列表而不是ndarray?

时间:2015-04-06 03:20:14

标签: python numpy multidimensional-array gradient

我有一个3D的numpy.ndarray,我需要计算它的渐变并获得一个具有相同尺寸的新ndarray。我正在使用numpy.gradient这样做,但它返回一个列表。如何让np.gradient返回np.ndarray?

    force = np.gradient(phi)*(-1)

phi是我的300³矩阵,我不断获取

    print(type(force))
    type : <class 'list'>

1 个答案:

答案 0 :(得分:1)

文档说gradient返回N arrays of the same shape as f giving the derivative of f with respect to each dimension.

的一个(列表)

np.gradient中的示例返回一个列表 - 一个包含2个数组的列表

In [105]: np.gradient(np.array([[1, 2, 6], [3, 4, 5]], dtype=np.float))
Out[105]: 
[array([[ 2.,  2., -1.],
       [ 2.,  2., -1.]]),
 array([[-0.5,  2.5,  5.5],
       [ 1. ,  1. ,  1. ]])]

1d输入产生一个数组

In [106]: np.gradient(np.array([1, 2, 6], dtype=np.float))
Out[106]: array([-0.5,  2.5,  5.5])

3d数组给出了3个数组的列表:

In [110]: len(np.gradient(np.ones((30,30,30))))
Out[110]: 3