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 相关文章推荐
Python3 模块、包调用&路径详解
Oct 25 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
Python利用heapq实现一个优先级队列的方法
Feb 03 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
python3 线性回归验证方法
Jul 09 Python
python面向对象 反射原理解析
Aug 12 Python
浅析PyTorch中nn.Linear的使用
Aug 18 Python
Django中自定义查询对象的具体使用
Oct 13 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
Dec 12 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 Python
Python selenium的这三种等待方式一定要会!
Jun 10 Python
Python中的 Set 与 dict
Mar 13 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
ie6 动态缩略图不显示的原因
2009/06/21 PHP
使用PHP会话(Session)实现用户登陆功能
2013/06/29 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
ExtJS自定义主题(theme)样式详解
2013/11/18 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
JavaScript实现信用卡校验方法
2015/04/07 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
ES6中Math对象的部分扩展
2017/02/20 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
Python二分查找详解
2015/09/13 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
super关键字的用法
2012/04/10 面试题
怎样写好自我鉴定
2013/12/04 职场文书
大学生的网上创业计划书
2013/12/31 职场文书
婚礼新郎父母答谢词
2014/01/16 职场文书
个人先进事迹材料
2014/12/29 职场文书
金秋助学感谢信
2015/01/21 职场文书
英文版辞职信
2015/02/28 职场文书
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js