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中最大最小赋值小技巧(分享)
Dec 23 Python
Python字典及字典基本操作方法详解
Jan 30 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
用Django写天气预报查询网站
Oct 21 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
python print输出延时,让其立刻输出的方法
Jan 07 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
Python 实现键盘鼠标按键模拟
Nov 18 Python
Django url 路由匹配过程详解
Jan 22 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 表单验证实现代码
2009/03/10 PHP
小谈php正则提取图片地址
2014/03/27 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
2011/06/02 Javascript
js中有关IE版本检测
2012/01/04 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
Python多线程下载文件的方法
2015/07/10 Python
Python入门学习指南分享
2018/04/11 Python
Python检测网络延迟的代码
2018/05/15 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
python文字转语音实现过程解析
2019/11/12 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
LN-CC日本:高端男装和女装的奢侈时尚目的地
2019/09/01 全球购物
通信工程毕业生自荐信
2013/11/01 职场文书
化工实习心得体会
2014/09/09 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
总结一下关于在Java8中使用stream流踩过的一些坑
2021/06/24 Java/Android
JavaScript的function函数详细介绍
2021/11/20 Javascript