python 矢量化,python向量化计算

  python 矢量化,python向量化计算

  首先,本文继续numpy学习。

  两向量运算numpy的数组通常是批量运算,不写循环。

  一维数组

  二维数组

  其他运算:加减乘除。以乘法为例。

  numpy广播(Broadcast)广播是NumPy对不同形状的数组进行数值计算的一种方式。数组上的算术运算通常在相应的元素上执行。

  如果两个数组A和B的形状相同,即满足a.shape == b.shape,那么a*b的结果就是数组A和B的对应位相乘,这就要求维数相同,每个维数的长度相同。

  当操作中两个数组的形状不同时,numpy会自动触发广播机制。

  三个NumPy切片和索引ndarray对象的内容可以通过索引或切片来访问和修改,就像Python中list的切片操作一样。

  Ndarray数组可以基于0-n的下标进行索引,slice对象可以通过内置的Slice函数进行切片,可以设置start、stop和step参数,从原数组中切出一个新的数组。

  多维数组也适用于上述索引提取方法:

  numpy数组比较运算

  整数数组索引以下示例获取数组中位置(0,0)、(1,1)和(2,0)处的元素。

  布尔索引我们可以通过一个布尔数组来索引目标数组。

  布尔索引通过布尔运算(如比较运算符)获得满足指定条件的元素数组。

  从数组中筛选出不复杂的元素。

  花式索引是指用整数数组进行索引。

  花式索引根据索引数组的值取值,作为目标数组的一个轴的下标。对于一维整数数组作为index,如果目标是一维数组,那么index的结果就是对应位置的元素;如果目标是二维数组,那么它就是下标对应的行。

  与切片不同,花式索引总是将数据复制到一个新的数组中。

  下面的示例取出一个8*4矩阵的第4、2、1和7行来构成一个新数组。

  请注意两者之间的区别。它是右边的第二个索引,并且(先选择行,然后选择列)是所需数据所在列的下标。

  列式选择:要使用np.ix_

  四个Numpy数组操作修改数组整形的形状,而不改变数据。flatten,平面数组元素的迭代器,返回数组的副本,对副本所做的更改不会影响原始数组。ravel返回扩展的数组。numpy . shape numpy . shape修改形状而不更改数据。格式如下:numpy。reshape (arr,new shape,order= c )

  Arr:要修改形状数组newshape: integer或integer array,新形状应该与原始形状顺序兼容:“c”-按行,“f”-按列,“a”-原始顺序,“k”-元素在内存中出现的顺序。

  翻转数组函数描述了转置数组的维数。t和self.transpose()。同一个rollaxis向后滚动指定的轴。交换数组的两个轴。转置函数用于交换数组的维数。格式如下:

  numpy.transpose(arr,axes)

  Numpy.ndarray.T类似于numpy.transpose:不贴例子。

  Numpy.rollaxis numpy.rollaxis函数按以下格式将特定轴滚动回特定位置:

  numpy.rollaxis(arr,axis,start)参数说明:

  Arr:数组轴:向后滚动的轴,其他轴的相对位置不变。start:默认值为零,表示完整滚动。将滚动到特定位置。

  关于轴的例子很抽象,只看概念很难理解。我的理解是:给纸上的每个数字编号。

  上面的例子,0(000),1(001),2(010),3(011),4(100),5(101),6(110),7(111)

  这个轴2滚动,对于000,001-100,010-001,011-101,100-010,101-110,110-011.111不变。

  结合前面的数组比较,很容易理解这一点。

  注意哪里:

  numpy.where() numpy.where()函数返回输入数组中满足给定条件的元素的索引。

  其中等效于if条件。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: