• NumPy数组基本的索引和切片


    对一维数组来说,NumPy数组的索引切片与Python列表的功能差不多:

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

    但是,特别注意的是,如果要将一个标量值赋值给一个切片,这个修改会直接反映到源数组上(即使你已经新建了一个变量来保存),NumPy数组切片是原始数组的视图。

    >>> arr_temp = arr[4:6]
    >>> arr_temp
    array([4, 5])
    >>> arr_temp[1]=7
    >>> arr
    array([0, 1, 2, 3, 4, 7, 6, 7, 8, 9])

    因为NumPy设计的目的是处理大数据,所以如果要不断复制数据的话会带来巨大的性能和内存问题。因此,NumPy选择所有切片都使用初始视图来提高效率。

    对高维数组,可以对各个元素进行递归访问。为了方便,可以传入以逗号隔开的索引列表来选取:

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

    再比如这个:

    >>> arr2[1:,2]
    array([6, 9])

    前一个1:表示从索引1到结尾,即[[4,5,6],[7,8,9]],后一个2是下一个维度的索引2,即6,9,因此返回了[6,9]。

    除了基本的索引,还有一种叫花式索引的操作,指的是利用整数数组进行索引。花式索引与切片不同,会把数据复制到新数组中。

  • 相关阅读:
    Window服务的创建与删除
    remoting 中事件找不到订阅者时引发异常的解决办法
    TCP/IP 的一些常识
    JDK ByteBuffer & MINA IoBuffer 总结
    web协议总结
    NIO VS IO
    MINA TCP 粘包 少包最终解决方案
    NIO 之 通道
    流式套接字(TCP)和 数据报套接字(UDP)的区别
    MINA 异步 读写总结
  • 原文地址:https://www.cnblogs.com/zhouyifeng/p/7846793.html
Copyright © 2020-2023  润新知