numpy方法小结

栏目: Python · 发布时间: 5年前

一、创建ndarray:

  • np.array(data):参数接受一切序列型对象,如果传入等长的嵌套序列则转换为多维数组
  • np.arange():类似于range,不过返回的不是列表而是ndarray
  • np.ones()/np.ones_like():前者传入shape,后者传入另一个ndarray,创建全1数组
  • np.zeros()/np.zeros_like():前者传入shape,后者传入另一个ndarray,创建全0数组
  • np.empty()/np.empty_like():前者传入shape,后者传入另一个ndarray,创建数组的值是未初始化的垃圾值(不是0)
  • np.eye()/np.identity():创建单位矩阵

二、数据类型:

  • arr.astype(指定类型名称):转换数组的数据类型
  • 注意:①如果将浮点数转换为小数,则小数部分被截断;全部是数字的字符串数组也可以转换为数值形式 ②调用此方法生成原数组的拷贝而不是修改原数组

三、索引和切片:

  • 对数组进行索引和切片得到的是视图,所有对结果进行修改会影响原数组;若想得到副本可通过arr.copy()
  • 二维数组的axis=0表示竖直方向,axis=1表示水平方向,且arr[0][2]和arr[0,2]等效
  • 理解:arr[A,B,C...]中,对索引可理解为每隔一个逗号表示降一维。逗号前面的A表示在已选数组的范围内降一维寻找,逗号后面的B表示在已选数组A内再降一维寻找,其中A,B,C...可为数字、切片;而当他们表示数组时变成花式索引,是这个理解的例外。详见第五点

四、布尔数组索引:

  • 布尔数组可作为索引获取True位置对应的值,并将这些值重新生成一个数组

五、花式索引:

  • 注意:二维数组a[[0,2],[1,3]]表示获取索引为(0,1),(2,3)的元素,而不是获取行数为0,2,列数为1,3的矩形区域
  • 若想获取矩形区域,有两种方法:①arr[[0,2]][:,[1,3]] ②使用np.ix_函数:arr[np.ix_([0,2],[1,3])]

六、数组转置:

  • arr.T

七、通用函数:

  • 一元ufunc:

    numpy方法小结
    numpy方法小结
  • 二元ufunc:

numpy方法小结
八、将条件逻辑表述为数组运算:
  • 三元表达式x if condition else y可用numpy.where(condition,x,y)代替,表示condition为一个布尔数组,在True的位置用x对应位置填充,在False的位置用y对应位置填充,其中x,y可为数组或者标量,若为数组,shape必须与condition相同

九、统计方法:

  • 既可以当作数组的实例方法调用,也可以当作顶级numpy函数使用

  • 在统计方法中,布尔值会被强制转为1和0,因此可以用sum来统计布尔数组中True的个数

    numpy方法小结
    numpy方法小结

十、用于布尔数组的方法:

  • any用于测试数组中是否存在True,all用于测试数组中是否全是True,两个方法返回值为True/False(不指定axis按整个数组计算,axis=0沿列计算,axis=1沿行计算)
  • 在非布尔数组中,则非0元素视为True

十一、排序:

  • 修改原数组的排序:arr.sort(axis)
  • 不修改原数组的排序:np.sort(arr)

十二、唯一化:

  • np.unique(arr)找出数组中的唯一值并返回已 排序 的结果

十三、数组重塑:

  • arr.reshape(形状元组):将一维数组转换为多维数组,作为参数形状的某一维可以为-1,表示该维度大小由数据本身推断
  • arr.flatten()/arr.ravel():将多维数组转换为一维数组,前者返回副本,后者返回视图

十四、合并和拆分:

  • np.concatenate([arr1,arr2],axis):axis=0时沿竖直方向合并,axis=1时沿水平方向合并
  • np.vstack((arr1,arr2)),np.r_[arr1,arr2]相当于np.concatenate([arr1,arr2],axis=0)
  • np.hstack((arr1,arr2)),np.c_[arr1,arr2]相当于np.concatenate([arr1,arr2],axis=1)
  • np.split(arr,要拆分的位置)可拆分数组

十五、重复:

  • arr.repeat():传入一个整数,则各元素都会重复那么多次;传入一组整数,则各元素按对应位置重复不同次数;可以通过axis指定重复方向
  • np.tile(arr):若第二个参数传入的是一个整数,则理解为水平重复次数;若传入的是一个元组,则表示以第一个参数为单位的布局

十六、广播:

  • 规则 1: 如果两个数组的维度数不相同,那么小维度数组的形状将会在最左边补1。

  • 规则 2: 如果两个数组的形状在任何一个维度上都不匹配,那么数组的形状会沿着维度 为 1 的维度扩展以匹配另外一个数组的形状。

  • 规则 3: 如果两个数组的形状在任何一个维度上都不匹配并且没有任何一个维度等于 1, 那么会引发异常。

    numpy方法小结
    numpy方法小结
    numpy方法小结
    numpy方法小结

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

电子商务:管理与社交网络视角(原书第7版)

电子商务:管理与社交网络视角(原书第7版)

(美)埃弗雷姆·特班(Efraim Turban)、戴维.金(David King)、李在奎、梁定澎、德博拉·特班(Deborrah Turban) / 时启亮、陈育君、占丽 / 机械工业出版社 / 2014-1-1 / 79.00元

本书对电子学习、电子政务、基于web的供应链、协同商务等专题进行了详细的介绍,全书涵盖丰富的资料以及个案,讨论了Web 2.0环境内的产业结构、竞争变化以及对当今社会的影响。另外,本书在消费者行为、协同商务、网络安全、网络交易及客户管理管理、电子商务策略等内容上都有最新的改编,提供读者最新颖的内容,贴近当代电子商务的现实。 本书适合高等院校电子商务及相关专业的本科生、研究生及MBA学员,也可......一起来看看 《电子商务:管理与社交网络视角(原书第7版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换