一起学习,一起成长!

python包Numpy基础:索引和切片

Numpy数组的索引是一个内容丰富的主题,因为选取数据子集单个元素的方式有很多。

  • 一维数组

In[13]:arr=np.arange(10)

In[14]:arr

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

In[15]:arr[5]

Out[15]: 5

In[16]:arr[5:8]

Out[16]: array([5, 6, 7])

In[17]:arr[5:8]=12

In[18]:arr

Out[18]: array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])

如上所示,当你将一个标量值赋值给一个切片时(如arr[5:8]=12),该值会自动传播到整个选取。跟列表最重要的区别在于,数组切片是原始数据的视图。这意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上

In[19]:arr_slice=arr[5:8]

In[20]:arr_slice[1]=12345

Out[21]:arr

Out[21]: array([0,1,2,3,4,12, 12345,12, 8,9])

In[22]:arr_slice[:]=64

In[22]:arr

Out[23]: array([ 0,1,2,3,4, 64, 64, 64,8,9])

由于Numpy的目的是处理大数据,假如Numpy坚持要将数据复制来复制去的话会产生何等的性能和问题。

警告:如果你想要得到的是ndarray切片的一份副本而非视图,就需要显示地进行复制操作,例如arr[5:8].copy()

  • 高维度数组

在一个二维数组中,各索引位置上的元素不再是标量而是一维数组:

In[24]: arr2d=np.array([[1,2,3],[4,5,6],[7,8,9]])

In[25]: arr2d[2]

#注意返回的值,是数组不是具体的标量

Out[25]: array([7, 8, 9])

「亲,如果笔记对您有帮助,收藏的同时,记得给点个赞、加个关注哦!感谢!」

「文中代码均亲测过,若有错误之处,欢迎批评指正,一起学习,一起成长!」

利用进行数据分析

胜象大百科