<返回更多

python包Numpy基础:索引和切片

2019-11-13    
加入收藏
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])

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

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

利用Python进行数据分析

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>