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