【问题标题】:numpy array indexing different results ( array[:2, 2:] vs array[:2, 2] )numpy 数组索引不同的结果( array[:2, 2:] vs array[:2, 2] )
【发布时间】:2021-07-01 08:12:41
【问题描述】:

array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

array[:2, 2:] gives array([[3],[6]])

but array[:2, 2] gives array([3, 6])

它们应该是相同的,因为两个索引都指向相同的元素。 为什么实际输出会给出不同的结果?

【问题讨论】:

  • 似乎您正在调用具有两个不同签名的函数:(range,range) 和 (range,number)。
  • 有据可查的是,使用整数索引会删除维度。用切片没有。你了解结果形状吗?

标签: numpy indexing


【解决方案1】:

每当您使用范围(例如[2:])时,无论该范围内有多少元素,它都会添加一个额外的维度。在索引(例如[2])时使用单个数字会“挤压”该维度。在上述情况下:

  1. array[:2, 2:] 给出array([[3], [6]]),其形状为(2, 1)。在这种情况下,第二个维度,即使只是维度 1,也被保留

  2. array[:2, 2] 给出array([3, 6]), which has shape (2,)`。在这种情况下,第二个维度被挤出

注意:您可以使用arr.shape 获取任何np.ndarray 对象的形状,使用arr.size 获取大小。对调试很有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多