Python 沿numpy数组的第四维追加

Python 沿numpy数组的第四维追加,python,numpy,Python,Numpy,我有一组4d的结构化数据(时间、水平、纬度、经度),我正在尝试插值。为了方便,我需要在数据的末尾添加一个额外的经度值,该值与第一个经度值相同。这将允许我使用的插值方法在较高的经度值下正确插值(例如359) 当前数据具有维度(64,70,64128),需要使其具有维度(64,70,64129),其中最后一个经度的值与第一个经度的值相同 这是我到目前为止试过的 data = np.concatenate((data, data[:,:,:,0]), axis = 3) 及 不管我得到什么 Valu

我有一组4d的结构化数据(时间、水平、纬度、经度),我正在尝试插值。为了方便,我需要在数据的末尾添加一个额外的经度值,该值与第一个经度值相同。这将允许我使用的插值方法在较高的经度值下正确插值(例如359)

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

这是我到目前为止试过的

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

不管我得到什么

ValueError: all the input arrays must have same number of dimensions
对于这两种情况,我都尝试在数据中添加一个额外的维度以附加
数据[:,:,:,0][…,np.newaxis]
,但是这没有帮助

在这一点上,我不知道如何去做这件事,除了循环通过每个时间、级别、lat和附加一个值之外,但是我需要对数百组数据执行此操作,所以这将变得非常缓慢


有什么想法吗?

问题是数组需要共享相同的形状(显然是从错误消息中),但这意味着数组需要具有相同的维数。快速的答案是使用

np.append(data, data[:,:,:,0,np.newaxis], axis=3)
# or alternatively in shorthand:
np.append(data, data[...,0,None], axis=-1)
在切片末尾添加
None
或向数组添加额外维度:

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

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

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

这允许阵列在所有维度中共享相同数量的维度和相同的形状,但您要追加的维度除外。

np.concatenate((数据,数据[:,:,:,:,0][…,无]),axis=3)
应该适合您。
数据
索引可以合并为一个[],但不必如此。谢谢!回想起来有点明显,但我不明白抓取我的切片实际上是在改变数据的维度。
>>> data.shape
(64, 70, 64, 128)

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

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