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实现类似jQuery使用中的链式调用的示例
Jun 16 Python
Python中asyncore异步模块的用法及实现httpclient的实例
Jun 28 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
解决django 新增加用户信息出现错误的问题
Jul 28 Python
通过字符串导入 Python 模块的方法详解
Oct 27 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
浅谈python3 构造函数和析构函数
Mar 12 Python
Django DRF路由与扩展功能的实现
Jun 03 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 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
hadoop中一些常用的命令介绍
2013/06/19 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
PHP登录环节防止sql注入的方法浅析
2014/06/30 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
vue.js2.0点击获取自己的属性和jquery方法
2018/02/23 jQuery
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
Python批量发送post请求的实现代码
2018/05/05 Python
Python之用户输入的实例
2018/06/22 Python
python 调试冷知识(小结)
2019/11/11 Python
使用K.function()调试keras操作
2020/06/17 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
使用HTML5和CSS3表单验证功能
2017/05/05 HTML / CSS
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
个人简历的自荐信
2013/10/23 职场文书
庆七一活动总结
2014/08/27 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
土建技术员岗位职责
2015/04/11 职场文书
防汛通知
2015/04/25 职场文书
大学毕业典礼致辞
2015/07/29 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书