NumPy数组基本的索引和切片

Posted 周屹峰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NumPy数组基本的索引和切片相关的知识,希望对你有一定的参考价值。

对一维数组来说,NumPy数组的索引切片与Python列表的功能差不多:

>>> arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> arr[3]
3
>>> arr[2:6]
array([2, 3, 4, 5])
>>> arr[3:]
array([3, 4, 5, 6, 7, 8, 9])

但是,特别注意的是,如果要将一个标量值赋值给一个切片,这个修改会直接反映到源数组上(即使你已经新建了一个变量来保存),NumPy数组切片是原始数组的视图。

>>> arr_temp = arr[4:6]
>>> arr_temp
array([4, 5])
>>> arr_temp[1]=7
>>> arr
array([0, 1, 2, 3, 4, 7, 6, 7, 8, 9])

因为NumPy设计的目的是处理大数据,所以如果要不断复制数据的话会带来巨大的性能和内存问题。因此,NumPy选择所有切片都使用初始视图来提高效率。

对高维数组,可以对各个元素进行递归访问。为了方便,可以传入以逗号隔开的索引列表来选取:

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

再比如这个:

>>> arr2[1:,2]
array([6, 9])

前一个1:表示从索引1到结尾,即[[4,5,6],[7,8,9]],后一个2是下一个维度的索引2,即6,9,因此返回了[6,9]。

 

除了基本的索引,还有一种叫花式索引的操作,指的是利用整数数组进行索引。花式索引与切片不同,会把数据复制到新数组中。

以上是关于NumPy数组基本的索引和切片的主要内容,如果未能解决你的问题,请参考以下文章

numpy数组的索引和切片

学习NumPy全套代码超详细基本操作数据类型数组运算复制和试图索引切片和迭代形状操作通用函数线性代数

NumPy数据分析基础:ndarray数组运算基本操作及切片索引迭代

(数据分析三板斧)第一斧Numpy-第三节:索引和切片

NumPy索引切片

python运算学习之Numpy ------ 数组的切片索引与循环遍历条件和布尔数组