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列表推导式的使用方法
Nov 21 Python
pandas使用apply多列生成一列数据的实例
Nov 28 Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 Python
python命名空间(namespace)简单介绍
Aug 10 Python
Python箱型图处理离群点的例子
Dec 09 Python
Pytorch模型转onnx模型实例
Jan 15 Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 Python
python matplotlib绘制三维图的示例
Sep 24 Python
4款Python 类型检查工具,你选择哪个呢?
Oct 30 Python
python爬虫中采集中遇到的问题整理
Nov 27 Python
Python实现自动玩连连看的脚本分享
Apr 04 Python
Python 图片添加美颜效果
Apr 28 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 第三节 变量介绍
2012/04/28 PHP
yii操作session实例简介
2014/07/31 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
Jquery中dialog属性小记
2010/09/03 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
JS获取select-option-text_value的方法
2013/12/26 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
python图像处理之反色实现方法
2015/05/30 Python
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
python使用turtle库绘制树
2018/06/25 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
EJB timer的种类
2014/10/28 面试题
建筑专业自荐信
2013/10/18 职场文书
学校七一活动方案
2014/01/19 职场文书
公司面试感谢信
2014/02/01 职场文书
2013年研究生毕业感言
2014/02/06 职场文书
董事长助理岗位职责
2014/02/18 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
初中作文评语集锦
2014/12/25 职场文书
八一建军节慰问信
2015/02/14 职场文书
java泛型通配符详解
2021/07/25 Java/Android
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle