我有一个形状为(1001,256,1,256)
的Dask数组(数据超过1001个时间步,len(x)=len(z)=256,len(y)=1)。
我需要用形状为(1001,2,1,256)
的数组填充x维度,我正在尝试使用dask.array.insert()
和dask.array.append()
,它们等效于同名的numpy函数。
这应该会产生一个形状为(1001,260,1,256)
的数组。
我的数组看起来像这样:
print(prepend_array)
print(append_array)
print(data)
dask.array<getitem, shape=(1001, 2, 1, 256), dtype=float64, chunksize=(1001, 2, 1, 256),chunktype=numpy.ndarray>
dask.array<getitem, shape=(1001, 2, 1, 256), dtype=float64, chunksize=(1001, 2, 1, 256),chunktype=numpy.ndarray>
dask.array<getitem, shape=(1001, 256, 1, 256), dtype=float64, chunksize=(1001, 8, 1, 256),chunktype=numpy.ndarray>
然后我做(插入和追加在一起-错误来自插入):
padded_data = da.append(
da.insert(
data,
0,
prepend_padding,
axis=1),
append_padding,
axis=1)
但请参阅以下错误(来自dask.array.rechunk):
ValueError: Chunks and shape must be of the same length/dimension. Got chunks=((1001,), (1,), (1,), (256,)), shape=(1001, 1, 2, 1, 256)
似乎我正在获得一个维度,我希望添加到现有的维度。对我来说,很明显的答案是axis=1
是问题所在,但我一直无法解决这个问题,因为任何有效值(0,1,2,3)都会给出len(shape)=5
,而不是预期的4
。
1条答案
按热度按时间gtlvzcf81#
好吧,我想我跳得太快了,但我不会删除我的问题,我会提供答案。
错误不在
axis=1
中,而是在0
中,或者更确切地说,是在dask.array.insert(arr, obj, values, axis)
中的obj=0
解决方案:
[0,0,0,0]
是data
中prepend_padding
插入之前的位置- docs。