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局域网ip扫描示例分享
Apr 03 Python
Python选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
初步认识Python中的列表与位运算符
Oct 12 Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 Python
Python实现命令行通讯录实例教程
Aug 18 Python
python决策树之CART分类回归树详解
Dec 20 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
Jun 19 Python
Python3 log10()函数简单用法
Feb 19 Python
PyQt5笔记之弹出窗口大全
Jun 20 Python
Python文件夹批处理操作代码实例
Jul 21 Python
python生成xml时规定dtd实例方法
Sep 21 Python
python自动化八大定位元素讲解
Jul 09 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 cookis创建实现代码
2009/03/16 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
2013/01/15 Javascript
js星星评分效果
2014/07/24 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
javascript连续赋值问题
2015/07/08 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
python实现线程池的方法
2015/06/30 Python
python查询mysql,返回json的实例
2018/03/26 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
Python中url标签使用知识点总结
2020/01/16 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
幼儿师范毕业生自荐信
2013/11/09 职场文书
药店采购员岗位职责
2014/09/30 职场文书
公司离职证明标准格式
2014/11/18 职场文书
营销计划书
2015/01/17 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis