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]
答案 0 :(得分:2)
因为您正在使用索引
切割数组 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
答案 1 :(得分:0)
将其视为2d阵列访问。初始化时,您将获得以下形式的二维数组:
[ 1 2 ]
[ 3 4 ]
[ 5 6 ]
给定2d数组时的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