01-numpy

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:
1. 一个强大的N维数组对象 ndarray
2. 广播功能函数
3. 整合 C/C++/Fortran 代码的工具
4. 线性代数、傅里叶变换、随机数生成等功能
数组与列表的区别是什么?
、数组中存储的数据类型必须是统一类型
、优先级:字符串>浮点型>整数

02-数据属性

NumPy的主要对象是同种元素的多维数组。它是一个元素表(通常是数字),都是相同的类型,由正整数元组索引。在NumPy维度中称为轴。

例如,3D空间中的点的坐标[1, 2, 1]具有一个轴。该轴有3个元素,所以我们说它的长度为3。
而[[ 1., 0., 0.], [ 0., 1., 2.]]则有两个轴,第一个轴的长度为2,第二个轴的长度为3。 Numpy数组类的名字叫做ndarray,经常简称为array。
要注意将numpy.array与标准Python库中的array.array区分开,后者只处理一维数组,并且功能简单。
NumPy的数组类被调用ndarray。也被称为 array。
请注意,numpy.array这与标准Python库类不同array.array,后者只处理一维数组并提供较少的功能。 ndarray对象的属性是:
· ndarray.ndim:数组的轴数(维度)
· ndarray.shape:数组的形状(大小)。这是一个整数元组。比如对于n行m列的矩阵,其shape形状就是(n,m)。而shape元组的长度则恰恰是上面的ndim值,也就是轴数。
· ndarray.size:数组中所有元素的个数。这恰好等于shape中元素的乘积n*m。
· ndarray.dtype:数组中元素的数据类型。除了标准的Python类型,Numpy还提供一些自有的类型。如 numpy.int32, numpy.int16, numpy.float64。
· ndarray.itemsize:数组中每个元素的大小(以字节为单位)。比如float64类型有itemsize为8(=64/8),而complex32的itemsize为4(=32/8)。
· ndarray.data:包含数组实际元素的缓冲区。通常我们不需要使用这个属性,因为我们将使用索引工具访问数组中的元素。
· ndarray.flags: 数组对象的一些状态指示或标签
什么是数组的维度?
NumPy 数组的维数称为秩(rank),一维数组的秩为 1,二维数组的秩为 2,以此类推。 在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。
比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。
所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。 怎么能看出数组的轴数?
简单来讲:就是看数组 嵌套了几层中括号 []。

创建一个 ndarray 只需调用 NumPy 的 array 函数即可:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

# 案例
>>> import numpy as np
>>> a = np.arange(15).reshape(3, 5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> a.shape
(3, 5)
>>> a.ndim
2
>>> a.dtype.name
'int64'
>>> a.itemsize
8
>>> a.size
15
>>> type(a)
<type 'numpy.ndarray'>
>>> b = np.array([6, 7, 8])
>>> b
array([6, 7, 8])
>>> type(b)
<type 'numpy.ndarray'>

03-数据类型

numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型。下表列举了常用 NumPy 基本类型。

名称                 描述
bool_ 布尔型数据类型(True 或者 False)
int_ 默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc 与 C 的 int 类型一样,一般是 int32 或 int 64
intp 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8 字节(-128 to 127)
int16 整数(-32768 to 32767)
int32 整数(-2147483648 to 2147483647)
int64 整数(-9223372036854775808 to 9223372036854775807)
uint8 无符号整数(0 to 255)
uint16 无符号整数(0 to 65535)
uint32 无符号整数(0 to 4294967295)
uint64 无符号整数(0 to 18446744073709551615)
float_ float64 类型的简写
float16 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_ complex128 类型的简写,即 128 位复数
complex64 复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128 复数,表示双 64 位浮点数(实数部分和虚数部分)

数据类型对象(dtype)

数据类型对象是用来描述与数组对应的内存区域如何使用
· 数据的类型(整数,浮点数或者 Python 对象)
· 数据的大小(例如, 整数使用多少个字节存储)
· 数据的字节顺序(小端法或大端法)
· 在结构化类型的情况下,字段的名称、每个字段的数据类型和每个字段所取的内存块的部分
· 如果数据类型是子数组,它的形状和数据类型
numpy.dtype(object, align, copy)
· object - 要转换为的数据类型对象
· align - 如果为 true,填充字段使其类似 C 的结构体。
· copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用

04-创建数组

ndarray 数组除了可以使用底层 ndarray 构造器来创建外,也可以通过以下几种方式来创建。

使用array方法,并提供标准的Python列表或者元组作为参数。此时,数组的类型将根据序列中元素的类型推导出来。

>>> import numpy as np
>>> a = np.array([2,3,4])
>>> a
array([2, 3, 4])
>>> a.dtype
dtype('int64')
>>> b = np.array([1.2, 3.5, 5.1])
>>> b.dtype
dtype('float64')

常见的错误是直接将多个数值作为参数传递,正确的做法是将他们以列表或元组的方式传递,如下:

>>> a = np.array(1,2,3,4)    # 错误
>>> a = np.array([1,2,3,4]) # 正确

array函数会自动将二维或三维序列转换为对应的二维或三维数组。

>>> b = np.array([(1.5,2,3), (4,5,6)])
>>> b
array([[ 1.5, 2. , 3. ],
[ 4. , 5. , 6. ]])

也可以在创建的时候,可以显式地指定数据的类型:

>>> c = np.array( [ [1,2], [3,4] ], dtype=complex )
>>> c
array([[ 1.+0.j, 2.+0.j],
[ 3.+0.j, 4.+0.j]])

通常,数组的元素最初是未知的,但其大小是已知的。因此,NumPy提供了几个函数来创建具有初始占位符内容的数组。

函数zero创建一个都是0的数组,函数one创建一个都是1的数组,函数empty创建一个初始内容是0或者垃圾值的数组,这取决于内存当时的状态。默认情况下,创建的数组的数据类型为float64。

>>> np.zeros( (3,4) )
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
>>> np.ones( (2,3,4), dtype=np.int16 ) # 同样可以指定类型
array([[[ 1, 1, 1, 1],
[ 1, 1, 1, 1],
[ 1, 1, 1, 1]],
[[ 1, 1, 1, 1],
[ 1, 1, 1, 1],
[ 1, 1, 1, 1]]], dtype=int16)
>>> np.empty( (2,3) ) # 根据当前内存状态的不同,可能会返回未初始化的垃圾数值,不安全。
array([[ 3.73603959e-262, 6.02658058e-154, 6.55490914e-260],
[ 5.30498948e-313, 3.14673309e-307, 1.00000000e+000]])
>>> np.full((3,4), 2.22) # 创建一个全部由2.22组成的数组
array([[2.22, 2.22, 2.22, 2.22],
[2.22, 2.22, 2.22, 2.22],
[2.22, 2.22, 2.22, 2.22]])

为了创建数字序列,NumPy提供了一个类似于range返回数组而不是列表的函数 arange 。

>>> np.arange( 10, 30, 5 )
array([10, 15, 20, 25])
>>> np.arange( 0, 2, 0.3 ) # 可以接受浮点类型的参数,比如这里的步长
array([ 0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])
numpy.arange(start, stop, step, dtype)
· start:范围的起始值,默认为0
· stop: 范围的终止值(不包含)
· step: 两个值的间隔,默认为1
· dtype: 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。

当arange函数使用浮点步长的时候,精度肯能出现问题。这种情况下,我们一般使用linspace函数,它的第三个参数指定在区间内均匀生成几个数,至于步长,系统会自动计算。

>>> from numpy import pi  # 导入圆周率
>>> np.linspace( 0, 2, 9 ) # 从0到2之间的9个数
array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
>>> x = np.linspace( 0, 2*pi, 100 ) # 从0到2Π之间,生成100个数
>>> f = np.sin(x)
numpy.linspace(start, stop, num, endpoint, retstep, dtype)

· start: 序列的起始值
· stop: 序列的终止值,如果endpoint为True,则终止值包含于序列中
· num: 要生成的等间隔样例数量,默认为50
· endpoint: 序列中是否包含stop值,默认为Ture
· retstep: 如果为True,返回样例以及连续数字之间的步长
· dtype: 输出ndarray的数据类型

01 numpy库(一)的更多相关文章

  1. Numpy库的学习(三)

    今天我们继续学习一下Numpy库的学习 废话不多说 ,开始讲 比如我们现在想创建一个0-14这样一个15位的数组 可以直接写,但是很麻烦,Numpy中就给我们了一个方便创建的方法 numpy中有一个a ...

  2. 【python】numpy库和matplotlib库学习笔记

    Numpy库 numpy:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成,并可与C++/Fortran语言无缝结合.树莓派Python v3默 ...

  3. 安装numpy库

    1.先安装pip: 下载地址:http://pypi.python.org/pypi/pip#downloads 下载pip-8.1.2.tar.gz(md5,pgp)完成之后,解压到一个文件夹,cm ...

  4. Python的numpy库下的几个小函数的用法

    numpy库是Python进行数据分析和矩阵运算的一个非常重要的库,可以说numpy让Python有了matlab的味道 本文主要介绍几个numpy库下的小函数. 1.mat函数 mat函数可以将目标 ...

  5. numpy库:常用基本

    numpy 本文主要列出numpy模块常用方法 大部分内容来源于网络,而后经过自己的一点思考和总结,如果有侵权,请联系我 我是一名初学者,有哪些地方有错误请留言,我会及时更改的 创建矩阵(采用ndar ...

  6. Python数据分析numpy库

    1.简介 Numpy库是进行数据分析的基础库,panda库就是基于Numpy库的,在计算多维数组与大型数组方面使用最广,还提供多个函数操作起来效率也高 2.Numpy库的安装 linux(Ubuntu ...

  7. 数据分析与展示——NumPy库入门

    这是我学习北京理工大学嵩天老师的<Python数据分析与展示>课程的笔记.嵩老师的课程重点突出.层次分明,在这里特别感谢嵩老师的精彩讲解. NumPy库入门 数据的维度 维度是一组数据的组 ...

  8. 初识NumPy库-基本操作

    ndarray(N-dimensional array)对象是整个numpy库的基础. 它有以下特点: 同质:数组元素的类型和大小相同 定量:数组元素数量是确定的 一.创建简单的数组: np.arra ...

  9. numpy库常用基本操作

    NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数 ...

随机推荐

  1. centos 7 源代码 mysql-5.7.2 安装

    CENTOS MYSQL 5.7 下载MySQL 5.7 https://dev.mysql.com/downloads/mysql/5.7.html#downloads cd /usr/local/ ...

  2. STM32WB HSE校准

    通过改变RCC_HSECR寄存器中的HSETUNE[5:0]位域的值来校准HSE的输出频率 1.将HSE时钟配置为MCO模式输出到PA8引脚 HAL_RCC_MCOConfig(RCC_MCO1, R ...

  3. oracle下关于table的常用sql整理

    创建表,create TABLE table( 列名称1 数据类型1, 列名称2 数据类型2, 列名称3 数据类型3, ......); eg: create table TABLE_24751( i ...

  4. c++ 一些注意事项

    1.long int的字节信息:int在32位系统下是4字节,long在32位也是4字节,在64位Int不变,但是long变成8字节,所以我们的编译器不同可能会导致我们处理int,long不同 2.注 ...

  5. except用法

    #!/usr/bin/expect set timeout 20 spawn ssh -l root 172.25.254.102 expect "(yes/no)?" send ...

  6. C++归并排序(数组&链表)

    1.归并排序(Merge Sort) 归并排序的性能不受输入数据的影响,始终都是O(n log n)的时间复杂度.代价是需要额外的内存空间. 归并排序是建立在归并操作上的一种有效的排序算法.该算法是采 ...

  7. Linux终端命令行的快捷键

    涉及在Linux命令行下进行快速移动光标.命令编辑.编辑后执行历史命令.Bang(!)命令.控制命令等.让basher更有效率. • 常用 1.ctrl+左右键:在单词之间跳转 2.ctrl+a:跳到 ...

  8. 使用cJSON解析JSON

    cJSON获取数组元素的每个值 { "operType": 0x5, "field": ["time","matchRule&qu ...

  9. elk快速入门-Logstash

    Logstash1.功能:数据输入,数据筛选,数据输出2.特性:数据来源中立性,支持众多数据源:如文件log file,指标,网站服务日志,关系型数据库,redis,mq等产生的数据3.beats:分 ...

  10. 如何设置zencart买满多少免运费?

    有时候会希望客户买满多少免运费,当订单总金额大于免运费的订单金额设值时,免运费.下面介绍一下zencart设置买满多少免运费: 1.进入后台–模块管理(Modules)–总额计算(Order Tota ...