我正在忙于阅读Wes Mckinney编写的Python进行数据分析,并且遇到了以下示例,该示例有些令人困惑.它涉及将多个索引数组传递给np数组.
给定以下np.array
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]
[24 25 26 27]
[28 29 30 31]]
当我们使用以下值在数组上执行花式索引时
arr[[1, 5, 7, 2], [0, 3, 1, 2]]
以下结果
array([ 4, 23, 29, 10])
这不是我真正希望的>我知道它应该返回对应于每个实例tupple的1维元素数组.它返回的实际值使我感到困惑.
我认为它应该返回的元组应该是(0,1),(5,3),(7、1),(2、2)
应该返回[4,没有这样的元素,没有这样的元素,10]
我到底想念什么?
解决方法:
在2D数组arr中索引第一个元素时,将获得第一行:
In [119]: arr = np.array([[0,1,2],[3,4,5]])
In [120]: arr
Out[120]:
array([[0, 1, 2],
[3, 4, 5]])
In [123]: arr[0]
Out[123]: array([0, 1, 2])
因此,在NumPy-lingo中,“ 0轴”与arr的行相关联.还要注意arr和列表列表之间的紧密联系
In [126]: lol = [[0,1,2],[3,4,5]]
In [127]: lol[0]
Out[127]: [0, 1, 2]
当然,对于列表的列表,lol [0]应该返回第一项,即[0,1,2],这是完全合理的. arr [0]的行为方式相同-返回看起来像行的内容.
同样,如果沿第二根轴切片,则会得到一列.
In [125]: arr[:, 0]
Out[125]: array([0, 3])
通常,索引的顺序与轴的顺序匹配.首先是0轴,然后是1轴,依此类推.
因此,在2D数组中,0轴与行关联,而1轴与行关联
与列相关联.
如果您正在考虑沿x和y轴排列的数组元素,这可能对您来说是倒向的.在几何图形中,x轴通常指向右侧,而y轴是垂直的.因此,在几何图形中,坐标(x,y)首先给出水平索引,然后给出垂直索引.
索引数组时,由于上面显示的原因,关联被反转了.