首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一个函数可以在NumPy ndarray周围添加(NaN)值的缓冲区?

有没有一个函数可以在NumPy ndarray周围添加(NaN)值的缓冲区?
EN

Stack Overflow用户
提问于 2021-10-04 11:00:34
回答 2查看 65关注 0票数 1

我正在使用土地利用类的专题栅格。目标是将栅格分割成给定大小的较小的平铺。例如,我有一个1490像素的光栅,我想把它分成250x250像素的瓦片。为了得到相同大小的瓦片,我希望将光栅的宽度增加到1500像素,以恰好适合6个瓦片。为此,我需要将光栅的大小增加10个像素。

我目前正在使用rasterio库打开栅格,该库返回一个NumPy ndarray。有没有一个函数可以在这个数组周围添加一个缓冲区?目标应该是这样的:

代码语言:javascript
复制
import numpy as np

a = np.array([
    [1,4,5],
    [4,5,5],
    [1,2,2]
])

a_with_buffer = a.buffer(a, 1) # 2nd argument refers to the buffer size

然后,a_with_buffer将如下所示:

代码语言:javascript
复制
[0,0,0,0,0]
[0,1,4,5,0],
[0,4,5,5,0],
[0,1,2,2,0],
[0,0,0,0,0]
EN

回答 2

Stack Overflow用户

发布于 2021-10-04 11:10:34

您可以使用np.pad

代码语言:javascript
复制
>>> np.pad(a, 1)
array([[0, 0, 0, 0, 0],
       [0, 1, 4, 5, 0],
       [0, 4, 5, 5, 0],
       [0, 1, 2, 2, 0],
       [0, 0, 0, 0, 0]])
票数 2
EN

Stack Overflow用户

发布于 2021-10-04 11:09:27

您可以创建np.zeros,然后在索引中插入a,如下所示。

试试这个:

代码语言:javascript
复制
>>> a = np.array([[1,4,5],[4,5,5],[1,2,2]])

>>> b = np.zeros((5,5))

>>> b[1:1+a.shape[0],1:1+a.shape[1]] = a

>>> b
array([[0., 0., 0., 0., 0.],
       [0., 1., 4., 5., 0.],
       [0., 4., 5., 5., 0.],
       [0., 1., 2., 2., 0.],
       [0., 0., 0., 0., 0.]])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69434864

复制
相关文章

相似问题

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