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文件比较示例分享
Jan 10 Python
使用Python3中的gettext模块翻译Python源码以支持多语言
Mar 31 Python
Python通过正则表达式选取callback的方法
Jul 18 Python
快速了解Python开发中的cookie及简单代码示例
Jan 17 Python
Python编程flask使用页面模版的方法
Dec 28 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
python学生管理系统开发
Jan 30 Python
Python 获取项目根路径的代码
Sep 27 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
Mar 25 Python
django 实现手动存储文件到model的FileField
Mar 30 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
Python爬虫如何破解JS加密的Cookie
Nov 19 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
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
破解安装Pycharm的方法
2018/10/19 Python
python3.6实现学生信息管理系统
2019/02/21 Python
PyQt5实现简易电子词典
2019/06/25 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
AmazeUI 模态窗口的实现代码
2020/08/18 HTML / CSS
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
北京银河万佳Java面试题
2012/03/21 面试题
写给女生的道歉信
2014/01/08 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
八一建军节慰问信
2015/02/14 职场文书
大学生读书笔记范文
2015/07/01 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python