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的Flask框架中构建Web表单的教程
Jun 04 Python
Python中标准库OS的常用方法总结大全
Jul 19 Python
对tf.reduce_sum tensorflow维度上的操作详解
Jul 26 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
解决python3 pika之连接断开的问题
Dec 18 Python
详解如何设置Python环境变量?
May 13 Python
Python基本语法之运算符功能与用法详解
Oct 22 Python
python实现查找所有程序的安装信息
Feb 18 Python
python属于解释语言吗
Jun 11 Python
Matplotlib中%matplotlib inline如何使用
Jul 28 Python
python 检测图片是否有马赛克
Dec 01 Python
详解MindSpore自定义模型损失函数
Jun 30 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的header和asp中的redirect比较
2006/10/09 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
python查找第k小元素代码分享
2013/12/18 Python
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
大学生职业生涯规划书范文
2014/01/04 职场文书
书法培训心得体会
2014/01/05 职场文书
秋季校运动会广播稿
2014/02/23 职场文书
小学学校评估方案
2014/06/08 职场文书
建筑安全责任书范本
2014/07/24 职场文书
档案工作个人总结
2015/03/03 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
Python类方法总结讲解
2021/07/26 Python
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL
设置IIS Express并发数
2022/07/07 Servers