python - 增加(可能)部分超出 Python 范围的 ROI 的值
问题描述
我有一个需要用另一个(较小)数组的值部分递增的数组。但是,即使较小的数组确实从较大数组的边界内开始,在某些情况下它也可能会溢出,如下所示。
在这种情况下,我仍然希望通过裁剪溢出索引并使用边界内剩余内容的方式来增加/修改值。
这是我目前的做法
h = big_image.shape[0]
w = big_image.shape[1]
small_image = make_small_image(c) # c is the edge length
if (x+c) > w:
small_image = small_image[:(w - x), :]
if (y+c) > h:
small_image = small_image[:, :(h - y)]
big_image[y:y + c, x: x + c] += small_image.T
我想知道是否有一种更简单、更快捷的方法(API 或更好的技术等)
解决方案
现在您正在修改数组small_image
,从而在 if 条件为 时创建数据的新副本True
。相反,您可以为裁剪的小图像创建一个内存视图:
small_img_memview = small_image[:(w - x), :(h - y)]
这应该始终是正确的,即使在 if 条件是False
并且应该比复制更快的情况下也是如此。
当然,您也可以将所有代码写在一行中:
big_image[y:y + c, x: x + c] += small_image[:(w - x), :(h - y)].T
推荐阅读
- reactjs - React Navigation V2 从底部选项卡导航器中隐藏单个选项卡
- ios - 如何在 Swift 中分隔字符串中的两个 URL?
- python - 如何设置 python-mode 以便 linter 检查 python 3 和 python 2 错误
- vue.js - 作为道具传递的对象数组不更新子组件
- checkbox - 在 Google 表格中启用/禁用复选框
- python - TypeError:“Mul”Op 的输入“y”的类型为 float32,与参数“x”的类型 float64 不匹配
- jekyll - 如何在 GitHub Pages 上生成指向帖子原始降价文件的链接?
- azure-powershell - 获取 AzureStorageBlobContent 超时
- android - Android - 无法运行 aapt dump badging:'android:icon' 属性:属性值引用不存在
- machine-learning - Seeker 识别(机器学习)