沿numpy数组

时间:2016-12-06 01:49:56

标签: python numpy

我有一组4d数据结构(时间,级别,纬度,经度),我试图插值。为了方便这样做,我需要在数据的末尾添加一个额外的经度值,其值与第一个经度值相同。这将允许我使用的插值方法正确插值更高的经度值(例如359)

目前数据有维度(64,70,64,128),需要使其具有维度(64,70,64,129),其中最后一个经度的值与第一个经度的值相同。

这是我到目前为止所尝试的,

data = np.concatenate((data, data[:,:,:,0]), axis = 3)

data = np.append( data, data[:,:,:,0],axis = 3)

但是我得到了

ValueError: all the input arrays must have same number of dimensions

对于两者,我尝试在数据中添加一个额外的维度以附加data[:,:,:,0][...,np.newaxis],但这没有帮助。

此时我不知道该怎么做,除了循环每次,级别,lat和附加单个值,但是我需要对数百组数据执行此操作,这样就可以了很慢。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

问题是您的阵列需要共享相同的形状(显然来自错误消息),但这意味着您的阵列需要具有相同数量的维度。快速回答是使用

np.append(data, data[:,:,:,0,np.newaxis], axis=3)
# or alternatively in shorthand:
np.append(data, data[...,0,None], axis=-1)

在切片末尾添加Nonenp.newaxis会为数组添加额外的维度:

>>> data.shape
(64, 70, 64, 128)

>>> data[...,0].shape
(64, 70, 64)

>>> data[...,0,None].shape
(64, 70, 64, 1)

这允许阵列在所有维度上共享相同数量的维度和相同的形状,但是你要追加的那个。