我有一组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和附加单个值,但是我需要对数百组数据执行此操作,这样就可以了很慢。
有什么想法吗?
答案 0 :(得分:1)
问题是您的阵列需要共享相同的形状(显然来自错误消息),但这意味着您的阵列需要具有相同数量的维度。快速回答是使用
np.append(data, data[:,:,:,0,np.newaxis], axis=3)
# or alternatively in shorthand:
np.append(data, data[...,0,None], axis=-1)
在切片末尾添加None
或np.newaxis
会为数组添加额外的维度:
>>> data.shape
(64, 70, 64, 128)
>>> data[...,0].shape
(64, 70, 64)
>>> data[...,0,None].shape
(64, 70, 64, 1)
这允许阵列在所有维度上共享相同数量的维度和相同的形状,但是你要追加的那个。