首页 > 解决方案 > 是否可以一次性分配给 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:数组的索引太多

但杰夫的代码有效。这里发生了什么?

标签: pythonnumpydeep-learningnumpy-ndarray

解决方案


示例中给出的数组有 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。希望这可以帮助!


推荐阅读