python - 是否可以一次性分配给 numpy 数组(arr[a:b,c:d])的 2 个不同范围?
问题描述
我有来自Jeff Heatons github的这一行:
image_array[r:r+GENERATE_SQUARE,c:c+GENERATE_SQUARE] = generated_images[image_count] * 255
尝试通过使用简单数据对其进行测试来理解这一点:
x = np.array([1,2,3,4,5,6,7,8,9])
print(x[1:4, 6:8])
我收到一个错误: IndexError:数组的索引太多
但杰夫的代码有效。这里发生了什么?
解决方案
示例中给出的数组有 2 个维度。它不是一次性分配给两个多个范围,而是分配给二维数组的子集。
要重现它,请考虑以下代码段:
>>> x = np.array([[1,2,3], [4, 5,6]])
>>> x.ndim
>>> 2 # 2 dimensional array
>>> x[0:1, 0:1] = 2 # This means 1st element of 1st dim and 1st element of 2nd dim.
>>> x
>>> array([[2, 2, 3],
[4, 5, 6]])
请参阅此以在 中对 n 维数组进行切片numpy
。希望这可以帮助!
推荐阅读
- python - 从多个文件导入变量
- amazon-web-services - 通过 Spinnaker/Terraform 在 EC2 实例上安装 AWS CLI
- java - 任务启动后更新进度条最大值
- node.js - Formik + Yup 访问嵌套值的错误
- python - 循环通过 ssh 连接和目录
- javascript - 如何显示包含相似类组合的所有 div
- c# - On Insert 触发中断 EF Add
- regex - 如何匹配 RewriteRules 中的量词 { 6, }?
- javascript - 如何
从 GraphQL 查询结果中的字符串中删除标签 - firebase - 在访问我的网站之前强制用户登录的最佳方法