numpy.array 操作使用简单总结


Posted in Python onNovember 08, 2019
import numpy as np

numpy.array 常用变量及参数

  • dtype变量,用来存放数据类型, 创建数组时可以同时指定。
  • shape变量, 存放数组的大小, 这人值是可变的, 只要确保无素个数不变的情况下可以任意修改。(-1为自动适配, 保证个数不变)
  • reshape方法,创建一个改变了形状的数组,与原数组是内存共享的,即都指向同一块内存。 

创建数组的方法

np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]], dtype=np.float)
np.arange(0,1,0.1) #0到1之间步长为0.1的数组, 数组中不包含1
np.linspace(0, 1, 5) # 开始:0, 结束1, 元素个数 5。 array([ 0. , 0.25, 0.5 , 0.75, 1. ])
np.logspace(0, 1, 5) # 开始:0, 结束1, 元素个数 5. array([ 10**0. , 10**0.25, 10**0.5 , 10**0.75, 10**1. ])
      # 结果是 array([ 1.  , 1.77827941, 3.16227766, 5.62341325, 10.  ])
 
s = 'abcdefg'
np.fromstring(s, dtype=np.int8)
 
def func2(i, j):
 return (i+1) * (j+1)
np.fromfunction(func2, (9,9))
 
np.ones((2, 2))
np.zero((2, 2))
np.eye(2)
 
#创建二维数组:
np.arange(0, 60, 10).reshape(-1, 1) + np.arange(0, 6)

数据读取

通过下标范围获取数据: 与python list对象操作一致。 不同点是这方法获取的数组与原数组是内存共享的。

通过整数序列获取新数组:例 x[[3,2,3,2] ], 产生新数组, 内存不共享

使用布尔数组获取数据:例: x[np.array([True, False, True, False, False])] 或 x[x>0.5], 返回True对应的数字。

代码示例:

>>> x = np.arange(10)
>>> y = x[::-1]
>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> y
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
>>> y[0] = 100
>>> x
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 100])
>>> y
array([100, 8, 7, 6, 5, 4, 3, 2, 1, 0])
>>> x[0] = 99
>>> x
array([ 99, 1, 2, 3, 4, 5, 6, 7, 8, 100])
>>> y
array([100, 8, 7, 6, 5, 4, 3, 2, 1, 99])
>>> y = x[1:6]
>>> y
array([1, 2, 3, 4, 5])
>>> y[2] = 33
>>> y
array([ 1, 2, 33, 4, 5])
>>> x
array([ 99, 1, 2, 33, 4, 5, 6, 7, 8, 100])
>>> x[[3,2,3,2]]
array([33, 2, 33, 2])
>>> z = x[[3,2,3,2]]
>>> z
array([33, 2, 33, 2])
>>> z[3] = 4
>>> z
array([33, 2, 33, 4])
>>> x
array([ 99, 1, 2, 33, 4, 5, 6, 7, 8, 100])
>>> x[x>10]
array([ 99, 33, 100])
>>>

数组扩展

np.vstack((a, b)):  增加行数, 把b数据追加到a的下面, 上下连接。
np.hstack((a, b)): 增加列数,把a, b左右连接。

>>> a = np.ones((3,3))
>>> b = np.eye(3)
>>> a
array([[ 1., 1., 1.],
  [ 1., 1., 1.],
  [ 1., 1., 1.]])
>>> b
array([[ 1., 0., 0.],
  [ 0., 1., 0.],
  [ 0., 0., 1.]])
>>> b *= 2
>>> b
array([[ 2., 0., 0.],
  [ 0., 2., 0.],
  [ 0., 0., 2.]])
>>> np.vstack((a, b))
array([[ 1., 1., 1.],
  [ 1., 1., 1.],
  [ 1., 1., 1.],
  [ 2., 0., 0.],
  [ 0., 2., 0.],
  [ 0., 0., 2.]])
>>> 
>>> np.hstack((a, b))
array([[ 1., 1., 1., 2., 0., 0.],
  [ 1., 1., 1., 0., 2., 0.],
  [ 1., 1., 1., 0., 0., 2.]])

ufunc运算

ufunc是universal function的缩写,它是一种能对数组的每个元素进行操作的函数。NumPy内置的许多ufunc函数都是在C语言级别实现的,因此它们的计算速度非常快。

np.sin(x, x)
np.add(a, b) ~ a+b
np.subtract(a, b) ~ a-b
np.multiply(a, b) ~ a*b
divide ~ a/b
floor divide ~ a//b
negative ~ -a
power ~ a**b
remainder ~ a % b

注意:复杂运算时,中间步聚会有临时变量,这会拖慢运算速度。

如:

x = a*b + c

等价于

t = a*b
x = t + c
del t

所以可手动优化

x = a * b
x += c

二维数组转一维 

>>> a
array([[ 1, 2, 3, 4],
  [ 4, 5, 6, 7],
  [ 7, 8, 9, 10]])
>>> a.ravel()
array([ 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10])

reshape函数可重新定义大小。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中使用mysql数据库详细介绍
Mar 27 Python
Hadoop中的Python框架的使用指南
Apr 22 Python
python中numpy的矩阵、多维数组的用法
Feb 05 Python
PyQt5每天必学之日历控件QCalendarWidget
Apr 19 Python
使用pycharm生成代码模板的实例
May 23 Python
Windows下Python3.6安装第三方模块的方法
Nov 22 Python
Python函数装饰器实现方法详解
Dec 22 Python
Django多数据库的实现过程详解
Aug 01 Python
TensorBoard 计算图的查看方式
Feb 15 Python
Python模块/包/库安装的六种方法及区别
Feb 24 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
Apr 02 Python
Pycharm中如何关掉python console
Oct 27 Python
如何在python中写hive脚本
Nov 08 #Python
Python 依赖库太多了该如何管理
Nov 08 #Python
python+OpenCV实现车牌号码识别
Nov 08 #Python
python实现飞机大战小游戏
Nov 08 #Python
python 基于dlib库的人脸检测的实现
Nov 08 #Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 #Python
python实现身份证实名认证的方法实例
Nov 08 #Python
You might like
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
php绘制一条弧线的方法
2015/01/24 PHP
php强制下载文件函数
2016/08/24 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
JS获取后台Cookies值的小例子
2013/03/04 Javascript
JavaScript?Apple设备检测示例代码
2013/11/15 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
python类和继承用法实例
2015/07/07 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
python正则实现提取电话功能
2018/02/24 Python
django连接mysql配置方法总结(推荐)
2018/08/18 Python
python创建文件备份的脚本
2018/09/11 Python
Python实现Dijkstra算法
2018/10/17 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
求职面试个人自我评价
2014/02/28 职场文书
保护环境标语
2014/06/09 职场文书
电力培训心得体会
2014/09/02 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
2014年应急管理工作总结
2014/11/26 职场文书
故宫英文导游词
2015/01/31 职场文书
Python制作动态字符画的源码
2021/08/04 Python
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
关于对TypeScript泛型参数的默认值理解
2022/07/15 Javascript