我有一个3D的numpy.ndarray,我需要计算它的渐变并获得一个具有相同尺寸的新ndarray。我正在使用numpy.gradient这样做,但它返回一个列表。如何让np.gradient返回np.ndarray?
force = np.gradient(phi)*(-1)
phi是我的300³矩阵,我不断获取
print(type(force))
type : <class 'list'>
答案 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