Numpy基础(二)

基本的索引和切片

数组切片是原始数组的视图,这意味着数组不会被复制,视图上的任何修改都会直接反映到源数据。

In [1]: arr = np.arange(10)
        arr[5:8] = 12
        arr        #arr[5:8]的值不是5,6,7了,而是修改后的12
Out[1]: array([ 0,  1,  2,  3,  4, 12, 12, 12,  8,  9])

继续,将切片赋值给一个变量,对该变量进行操作,看看源数据如何变化。

In [2]: arr_slice = arr[5:8]
        arr_slice[1] = 123
        arr
Out[2]: array([  0,   1,   2,   3,   4,  12, 123,  12,   8,   9])

很明显,结果如我们所料,源数据随切片变化而变化,所以:如果想要得到的是ndarray切片的一份副本而不是视图,就需要显式地进行复制操作,例如arr[5:8].copy()。

Numpy数组中的元素索引

对于一个二维数组,各索引位置上的元素不是标量而是一维数组,而三维数组呢,以此类推啦..

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

获取单个元素,比如3,可以为arr2d[0][2],这样有点麻烦对吧,可以传入一个以逗号隔开的索引列表来选取单个元素。即:
arr2d[0,2],这两种方式是等价的。

对于三维数组,arr3d[0]是一个2 x 3数组:

In [4]: arr3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
        arr3d
Out[4]: array([[[ 1,  2,  3],
                [ 4,  5,  6]],

               [[ 7,  8,  9],
                [10, 11, 12]]])

In [5]: arr3d[0]
Out[5]: array([[1, 2, 3],
               [4, 5, 6]])
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 来源:NumPy Tutorial - TutorialsPoint 译者:飞龙 协议:CC BY-NC-SA 4...
    布客飞龙阅读 33,746评论 6赞 97
  • NumPy(Numerical Python的简称)是高性能科学计算和数据分析的基础包。其部分功能包括: ndar...
    进步小小青年阅读 1,616评论 0赞 1
  • NumPy是Python中关于科学计算的一个类库,在这里简单介绍一下。 来源:https://docs.scipy...
    灰太狼_black阅读 1,369评论 0赞 5
  • 翻译自“Collection View Programming Guide for iOS” 0 关于iOS集合视...
    lakerszhy阅读 4,165评论 1赞 22
  • 现在减肥挺时髦,十个人有九个都嫌自己胖,吵吵着减肥。我是真心觉得自己有点胖,想减减,目标也不大,5到10斤就行。怎...
    随意路过阅读 176评论 0赞 0

友情链接更多精彩内容