【问题标题】:Integer array indexing python整数数组索引python
【发布时间】:2017-08-20 19:36:01
【问题描述】:
import numpy as np

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

print(a[[0, 1, 2], [0, 1, 0]])  # Prints "[1 4 5]"

print(a[[0, 0], [1, 1]])  # Prints "[2 2]"

我不明白为什么会导致 [1 4 5][2 2]

【问题讨论】:

  • 你的预期输出是什么?
  • 我对此没有任何期望。我想知道为什么会这样

标签: python arrays python-3.x numpy indexing


【解决方案1】:

因为您正在使用索引对数组进行切片

a[[0, 1, 2], [0, 1, 0]] 等价于

a[0, 0]  # 1
a[1, 1]  # 4
a[2, 0]  # 5

a[[0, 0], [1, 1]] 相当于两次a[0, 1]

更多关于 Numpy 索引here

【讨论】:

  • 好的。非常感谢。我明白了。
  • 谢谢。可能很简单,但一开始并不直观
【解决方案2】:

将其视为二维数组访问。当您初始化 a 时,您会以以下形式获得二维数组:

[ 1  2 ]
[ 3  4 ]
[ 5  6 ]

在给定二维数组时,Numpy 索引的工作方式如下:输入行索引列表,然后输入列索引列表。从语义上讲,您的第一个索引检索语句是说“从第 0 行检索元素 0,从第 1 行检索元素 1,从第 2 行检索元素 0”,对应于[1 4 5]。然后,您可以弄清楚为什么第二个语句会得到 [2 2]。

您可以在此处阅读有关此高级索引的更多信息:https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#integer-array-indexing

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 2015-05-31
    • 1970-01-01
    • 2018-12-31
    • 2013-07-04
    • 2020-11-30
    相关资源
    最近更新 更多