zoukankan      html  css  js  c++  java
  • 索引和切片

    Numpy数组的索引是一个内容丰富的主题,因为选取数据子集或单个元素的方式有很多。一维数组很简单,跟Python列表的功能差不多

     1 In [1]: import numpy as np
     2 
     3 In [2]: arr = np.arange(10)
     4 
     5 In [3]: arr 
     6 Out[3]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
     7 
     8 In [4]: arr[5:8]
     9 Out[4]: array([5, 6, 7])
    10 
    11 In [5]: arr[5:8] = 12
    12 
    13 In [6]: arr
    14 Out[6]: array([ 0,  1,  2,  3,  4, 12, 12, 12,  8,  9])

    如上所示,当讲一个标量值赋值给一个切片时,该值会自动传播到整个选区,与列表最重要的区别在于,数组切片是原始数组的视图。数据不会被复制,视图上的任何修改都会直接反应到原数组上(如果需要得到一份副本而非视图,就需要显示的进行复制操作,例如arr[5:8].copy())

    对于高纬度数组,能做的事情更多。在一个二维数组中,各索引位置上的元素不在是标量而是一维数组。

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

    也可以对各个元素进行递归访问,传入一个以逗号隔开的索引列表来选取单个元素。以下两种方式是等价的。

    1 In [9]: arr2[1][2]
    2 Out[9]: 6
    3 
    4 In [10]: arr2[1,2]
    5 Out[10]: 6

    在多维数组中,如果省略了后面的索引,则返回的对象会是一个维度第一点的ndarray。

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

    arr3是一个2*3的数组

    1 In [14]: arr3[0]
    2 Out[14]: 
    3 array([[1, 2, 3],
    4        [4, 5, 6]])
  • 相关阅读:
    Linux下如何查看哪些进程占用的CPU内存资源最多
    linux查看端口占用情况
    oracle11g用户名密码不区分大小写
    oracle表导入导出
    Oracle的实例占用内存调整
    修改oracle内存
    ORA-04031: 无法分配 共享内存
    OCI_INVALID_HANDLE 什么原因
    Android SDK Manager国内无法更新的解决方案
    sqlite3增删改查简单封装
  • 原文地址:https://www.cnblogs.com/yu-1104/p/7877635.html
Copyright © 2011-2022 走看看