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 网页解析HTMLParse的实例详解
Aug 10 Python
对python append 与浅拷贝的实例讲解
May 04 Python
TensorFlow实现简单卷积神经网络
May 24 Python
Sanic框架异常处理与中间件操作实例分析
Jul 16 Python
Python实现的连接mssql数据库操作示例
Aug 17 Python
Django高级编程之自定义Field实现多语言
Jul 02 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
Python操作SQLite数据库过程解析
Sep 02 Python
Python Numpy库常见用法入门教程
Jan 16 Python
Django框架models使用group by详解
Mar 11 Python
浅谈Python中的继承
Jun 19 Python
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
Apr 06 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
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
JavaScript-RegExp对象只能使用一次问题解决方法
2014/06/23 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
AngularJS封装指令方法详解
2016/12/12 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
python远程连接服务器MySQL数据库
2018/07/02 Python
Django forms组件的使用教程
2018/10/08 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
SmartBuyGlasses中国:唯视良品(销售名牌太阳镜、墨镜和眼镜框)
2017/07/03 全球购物
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
C#软件工程师英语面试题
2015/06/07 面试题
毕业生自荐信格式
2014/03/07 职场文书
诚信考试倡议书
2014/04/15 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
一帮一活动总结
2014/05/08 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
写给父母的感谢信
2015/01/22 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python
mysql中整数数据类型tinyint详解
2021/12/06 MySQL
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js