zoukankan      html  css  js  c++  java
  • numpy学习(数组和标量之间的运算切片)

    数组很重要,因为它使你不用编写循环即可对数据执行批量运算。这通常就叫做矢量化(vectorization)。大小相等的数组之间的任何算术运算都会将运算应用到元素级:

    同样,数组与标量的算术运算也会将那个标量值传播到各个元素:(这里的标量是指一个具体的值)

    基本的索引和切片NumPy数组的索引是一个内容丰富的主题,因为选取数据子集或单个元素的方式有很多。一维数组很简单。从表面上看,它们跟Python列表的功能差不多:

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

    改变arry2元素的值,源数组数据随即改变

    由于NumPy的设计目的是处理大数据,所以你可以想象一下,假如NumPy坚持要将数据复制来复制去的话会产生何等的性能和内存问题。

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

    因此,可以对各个元素进行递归访问,但这样需要做的事情有点多。你可以传入一个以逗号隔开的索引列表来选取单个元素。

    上例中arry1[1,3]等效于arry1[1][3]

    二维数组的索引方式:

    在多维数组中,如果省略了后面的索引,则返回对象会是一个维度低一点的ndarray(它含有高一级维度上的所有数据)。因此,在2×2×3数组array1中,array1[0]是一个2*3的数组:

    标量值和数组都可以被赋值给array1[0]:(数据接上图)

    切片索引

    切片沿着第0轴(即第一个轴)切片的。也就是说,切片是沿着一个轴向选取元素的。你可以一次传入多个切片,就像传入多个索引那样:

    传入多个切片索引,三维数据可在一个表达示中切三次,两维数据切两次,最后一次就是具体的元素了!

    “只有冒号”表示选取整个轴,因此你可以像下面这样只对高维轴进行切片:

  • 相关阅读:
    如何从人群中看出真正优秀的人
    JAVA的面向对象编程--------课堂笔记
    uC/OS-II源码分析
    肖申克的救赎
    汇编中基本的数据类型
    十进制负数转换为二进制、八进制、十六进制的知识分享
    x86汇编指令详解
    Angularjs
    事件处理类型的三种方法
    正则表达式的使用
  • 原文地址:https://www.cnblogs.com/anner-nie/p/8531317.html
Copyright © 2011-2022 走看看