numpy中索引和切片详解中索引和切片详解
主要介绍了numpy中索引和切片详解,具有一定借鉴价值,需要的朋友可以参考下。
索引和切片索引和切片
一维数组一维数组
一维数组很简单,基本和列表一致。
它们的区别在于数组切片是原始数组视图(这就意味着,如果做任何修改,原始都会跟着更改)。
这也意味着,如果不想更改原始数组,我们需要进行显式的复制,从而得到它的副本(.copy())。
import numpy as np #导入numpy
arr = np.arange(10) #类似于list的range()
arr
Out[3]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr[4] #索引(注意是从0开始的)
Out[4]: 4
arr[3:6] #切片
Out[6]: array([3, 4, 5])
arr_old = arr.copy() #先复制一个副本
arr_old
Out[8]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr[3:6] = 33
arr #可以发现将标量赋值给一个切片时,该值可以传播到整个选区
Out[10]: array([ 0, 1, 2, 33, 33, 33, 6, 7, 8, 9])
arr_old
Out[11]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
二维数组二维数组
二维数组中,各索引位置上的元素不再是标量,而是一维数组(好像很难理解哈)。
arr1 = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
arr1[0]
Out[13]: array([1, 2, 3])
arr1[1,2]
Out[14]: 6
好像很难理解,是吧。
那这样看:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
想到了什么?咱们当做一个平面直角坐标系。
相当于arr1[x,y],x相当于行数,y相当于列数(必须声明,图中x和y标反了,但不影响理解)。
多维数组多维数组
先说明下reshape()更改形状:
np.reshape(a,newshape,order='C')
a:array_like以一个数组为参数。
newshape:intortupleofints。整数或者元组