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中的类学习笔记
Sep 23 Python
Python中的自省(反射)详解
Jun 02 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
Jun 07 Python
python3 模拟登录v2ex实例讲解
Jul 13 Python
浅谈python和C语言混编的几种方式(推荐)
Sep 27 Python
python读写LMDB文件的方法
Jul 02 Python
python读取图片并修改格式与大小的方法
Jul 24 Python
通过实例解析Python调用json模块
Dec 11 Python
Python彻底删除文件夹及其子文件方式
Dec 23 Python
python实现查找所有程序的安装信息
Feb 18 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 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
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
另类调用flash无须激活的方法
2006/12/27 Javascript
jquery 简单的进度条实现代码
2010/03/11 Javascript
JavaScript中的prototype使用说明
2010/04/13 Javascript
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
创建简单的node服务器实例(分享)
2017/06/23 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
Vue.js实现可编辑的表格
2019/12/11 Javascript
python实现斐波那契数列的方法示例
2017/01/12 Python
python 除法保留两位小数点的方法
2018/07/16 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
python无序链表删除重复项的方法
2020/01/17 Python
Python学习笔记之装饰器
2020/08/06 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
python 批量将中文名转换为拼音
2021/02/07 Python
一款纯css3实现的鼠标悬停动画按钮
2014/12/29 HTML / CSS
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
Laravel中Kafka的使用详解
2021/03/24 PHP
七年级生物教学反思
2014/01/30 职场文书
情侣吵架检讨书
2014/02/05 职场文书
安全协议书范本
2014/04/21 职场文书
小学语文业务学习材料
2014/06/02 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
2014年网管工作总结
2014/12/11 职场文书
办公室行政主管岗位职责
2015/04/09 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android