python list操作来修改列表形状

时间:2017-06-01 15:45:20

标签: python numpy

在这种情况下,

np是numpy。

z_mesh是形状41 * 401的数组。

我需要从[2 * i,2 * j + 2]元素减去[2 * i,2 * j]元素并且[2 * i,2 * j]得到形状为20 * 200的dz_theta_mat和dz_gamma_mat th元素分别来自[2 * i + 2,2 * j]元素。

我的尝试没有为列表提供所需的形状。

如何修改它以获得所需的结果?

print np.shape(z_mesh)
dz_gamma_mat = [z_mesh[2*i,2*j+2]-z_mesh[2*i,2*j] for i,j in itertools.product(range(20),range(199))]
print np.shape(fish_dz_gamma_mat)
dz_theta_mat = [z_mesh[2*i+2,2*j]-z_mesh[2*i,2*j] for i, j in itertools.product(range(19),range(200))]
print np.shape(fish_dz_theta_mat)

(41, 401)
(3980,)
(3800,)

2 个答案:

答案 0 :(得分:5)

为什么不只是slice并减去?

dz_theta_mat = z_mesh[:-1:2, 2::2] - z_mesh[:-1:2, :-1:2]
dz_gamma_mat = z_mesh[2::2, :-1:2] - z_mesh[:-1:2, :-1:2]

答案 1 :(得分:0)

您应该将结果转换为numpy数组,然后重新整形结果,例如:

dz_theta_mat = np.array([z_mesh[2*i+2,2*j]-z_mesh[2*i,2*j] for i, j in itertools.product(range(19),range(200))]).reshape(z_mesh.shape)