首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将numpy数组转换为Zarr数组

如何将numpy数组转换为Zarr数组
EN

Stack Overflow用户
提问于 2020-10-20 03:40:07
回答 1查看 264关注 0票数 3

假设我将一个简单的列数据帧转换为一个numpy数组:

代码语言:javascript
复制
gdf.head()
>>>

     rid    rast
0      1    01000001000761C3ECF420013F0761C3ECF42001BF7172...
1      2    01000001000761C3ECF420013F0761C3ECF42001BF64BF...
2      3    01000001000761C3ECF420013F0761C3ECF42001BF560C...
3      4    01000001000761C3ECF420013F0761C3ECF42001BF7F25...
4      5    01000001000761C3ECF420013F0761C3ECF42001BF7172...

raster_np = gdf.to_numpy()
raster_np[0][0]
>>> array([1, '01000001000761C3E.........], dtype=object))   

我的任务是将rast数组转换为Zarr文件格式(由于numpy值的大小和数据帧的大小,可能需要分块和压缩,并且新的.zarr文件在S3/云存储环境中可以得到更好的利用)。我创建了一个简单的Zarr数组,如下所示:

代码语言:javascript
复制
 z_test = z.zeros(shape=(10000, 2), chunks=(10000, 2))
 z_test
 >>> <zarr.core.Array (10000, 2) float64>

现在,如何将raster_np中的数据转换为z_test并保留Zarr属性?简单地使用z_test = raster_np显然行不通。也许我对Zarr有些误解。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2021-12-03 21:44:10

由于初始数组是混合类型(object),因此需要使用正确的数据类型创建zarr数组,并对数据进行编码。您可以使用来自numcodecs的JSON编码器。

代码语言:javascript
复制
import numcodecs

z_test = zarr.zeros(shape=(10000, 2), dtype=object, object_codec=numcodecs.JSON())
z_test[:] = raster_np

但是,如果将ridraster列分别存储为具有intstr数据类型的单独数组,或者将十六进制转换为另一种基数,则性能会更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64434117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档