NumPy:修订间差异

(创建页面,内容为“NumPy(Numerical Python),是Python语言的一个扩展程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大…”)
 
无编辑摘要
 
(未显示同一用户的3个中间版本)
第1行: 第1行:
NumPy(Numerical Python),是[[Python]]语言的一个扩展程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy的前身Numeric最早是由Jim Hugunin与其它协作者共同开发,2005年,Travis Oliphant在Numeric中结合了另一个同性质的程序库Numarray的特色,并加入了其它扩展而开发了NumPy。NumPy为开放源代码并且由许多协作者共同维护开发。
NumPy是[[Python]]中科学计算的基本软件包。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。


==简介==
==简介==
===特色===
===时间轴===
NumPy参考CPython(一个使用字节码的解释器),而在这个Python实现解释器上所写的数学算法代码通常远比编译过的相同代码要来得慢。为了解决这个难题,NumPy引入了多维数组以及可以直接有效率地操作多维数组的函数与运算符。因此在NumPy上只要能被表示为针对数组或矩阵运算的算法,其运行效率几乎都可以与编译过的等效C语言代码一样快。


===安装===
===安装===
第13行: 第12行:


===导入NumPy===
===导入NumPy===
在脚本顶部导入,标准的NumPy导入方式如下:
在脚本顶部导入,一般的NumPy导入方式如下:
  import numpy as np
  import numpy as np


==基础知识==


==ndarray 数据结构==
=== 数据类型 ===
umPy的核心功能是ndarray(即n-dimensional array,多维数组)数据结构。这是一个表示多维度、同质并且固定大小的数组对象。


== ndarray ==
NumPy提供了N维数组类型(N-dimensional array)即ndarray,它是NumPy的核心。这是一个表示多维度、同类型并且固定大小的数组对象。所有ndarray对象都有如下性质:
* 数组的每个元素占用相同大小的内存块,并且所有块的解释执行方式都一样。
* 数组中每个元素


{{了解更多
| [https://numpy.org/doc/stable/reference/arrays.html Numpy 手册:数组对象]
| [https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html Numpy 手册:ndarray对象]
}}
===创建数组===
常用创建数组方法:
{| class="wikitable"
! 命令
! 描述
! 格式
! 示例
|-
| array()
| 创建一个Numpy数组。 
| numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0, like=None)
| <code>np.array([1,2,3])</code> 返回array([1, 2, 3]),将Python数组(列表)转化为Numpy数组(ndarray)。
|-
| arange()
|等差数列的一维数组。 可指定区间和步长
| numpy.arange(start=0, stop, step=1, dtype=None, *, like=None)
|可指定区间和步长,区间左闭右开。 <code>np.arange(2)</code> 返回array([0, 1]) <br \><code>np.arange(6,11,step=2)</code> 返回array([ 6,  8, 10])
|-
| linspace()
|等差数列的一维数组。 可指定区间和个数,区间左闭右闭。
| numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
|<code>np.linspace(1,2,num = 2)</code> 返回array([1., 2.]) <br \><code>np.linspace(1,100,num = 3)</code> 返回array([  1. ,  50.5, 100. ])
|-
| random.randint()
|  随机整数的一维数组。可指定区间和个数,区间左闭右开。
| random.randint(low, high=None, size=None, dtype=int)
| <code>np.random.randint(0,100,size = 10)</code> 返回有10个元素的一维数组,值为0到100(不包含)的随机整数。
|-
| random.rand()
| 指定形状的数组,值为0到1之间均匀分布的随机值(左闭右开)
| random.rand(d0, d1, ..., dn)
| <code>np.random.randint(2,3)</code>  返回一个形状2x3的随机数组。
|-
| random.randn()
| 指定形状的数组,值为标准正态分布随机值。
| random.randn(d0, d1, ..., dn)
|  <code>np.random.randn(2,3)</code>  返回一个形状2x3的随机数组。
|-
| random.standard_normal()
| 指定形状的数组,值为标准正态分布随机值。与random.randn()函数类似,参数不同。
| random.standard_normal(size=None)
| <code>np.random.standard_normal(size=(2,3))</code>  返回一个形状2x3的随机数组。
|-
| random.normal()
| 指定形状的数组,值为正态分布随机值。loc设置正态分布均值,scale设置标准差。
| random.normal(loc=0.0, scale=1.0, size=None)
| <code>np.random.normal(loc=80, scale=6, size=(3,60))</code> 返回一个形状3x60的随机数组。
|-
| ones()
|  返回一个使用1填充的并按指定形状和数据类型生成的新数组。
| numpy.ones(shape, dtype=None, order='C', *, like=None)
| <code>np.ones(2)</code> 返回array([1., 1.]),是一维有2个元素的数组。<br \><code>np.ones((2,3))</code> 返回二维每维有3个元素的数组。
|-
| ones_like()
| 返回一个使用1填充,形状和数据类型与给定数组一样的新数组。
| numpy.ones_like(a,dtype = None,order ='K',subok = True,shape = None )
| <code>np.ones_like(nd1)</code> 返回一个数组形状和数据类型与nd1一样,值使用1填充。
|-
| zeros()
| 返回给定形状和类型的新数组,并用0填充。
| numpy.zeros(shape, dtype=float, order='C', *, like=None)
| <code>np.zeros(2)</code> 返回array([0., 0.]),是一维有2个元素的数组。<br \><code>np.zeros((2,3))</code> 是二维每维有3个元素的数组。
|-
| zeros_like()
| 返回一个使用0填充,形状和数据类型与给定数组一样的新数组。
| numpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None)
| <code>np.zeros_like(nd1)</code> 返回一个数组形状和数据类型与nd1一样,值使用0填充。
|-
| full()
| 返回给定形状和类型的新数组,并用fill_value填充。
| numpy.full(shape, fill_value, dtype=None, order='C', *, like=None)
| <code>np.full((2,3),fill_value=3.14)</code> 返回形状为2x3,值为3.14的数组
|-
| full_like()
| numpy.full_like(a, fill_value, dtype=None, order='K', subok=True, shape=None)
|
|-
| empty()
|
|-
| empty_like()
|
|}
{{了解更多
| [https://numpy.org/doc/stable/reference/routines.array-creation.html Numpy 手册:数组创建示例]
| [https://numpy.org/doc/stable/reference/random/index.html Numpy 手册:随机数]
}}
===数组属性===
常用属性:
{| class="wikitable"  style="width: 100%;
! 属性
! 描述
|-
| ndarray.shape
| 数组形状
|-
| ndarray.ndim
| 数组的维数
|-
| ndarray.size
| 数组尺寸,即维数乘以每维元素个数。
|-
| ndarray.dtype
| 数组元素的数据类型。
|-
| ndarray.itemsize
| 一个数组元素的长度(以字节为单位)。
|}
{{了解更多
| [https://numpy.org/doc/stable/reference/arrays.ndarray.html#array-attributes Numpy 手册:数组属性]
}}
===复制和视图===
===输入输出===
{| class="wikitable"
! 命令
! 格式
! 描述
|-
| load()
|  加载.npy或.npz文件,当加载含有多个数组的npz文件时,加载后使用['存储的某个键']获取某个数组。
| numpy.load(file,mmap_mode = None,allow_pickle = False,fix_imports = True,encoding ='ASCII' )
| <code>np.load('test.npz')['np2']</code>。
|-
| save()
|  将数组保存到.npy文件。
| numpy.save(file, arr, allow_pickle=True, fix_imports=True)
| <code>np.save('test.npy', np2)</code> 保存np2数组到当前文件夹的test.npy中。
|-
| savez()
|  将多个数组以未压缩.npz格式保存到单个文件中。
| numpy.savez(file, *args, **kwds)
| <code>np.savez('123.npz', a=a, np2=np2)</code> 保存a和np2两个数组到123.npz文件中<br \>
|-
| savez_compressed()
|  将多个数组以压缩.npz格式保存到单个文件中。
| numpy.savez_compressed(file, *args, **kwds)
|
|-
| loadtxt()
|  从文本文件读取数组。
| numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes', max_rows=None, *, like=None)
| <code>np.loadtxt('test.txt',delimiter=',')</code> 读取test.txt文件中的数组,分隔符为','。
|-
| savetxt
|  将数组保存到文本文件。
| numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None)
| <code>np.savetxt('test.txt', nd1, fmt='%0.2f', delimiter=',')</code> 保存nd1数组到test.txt文件中,格式为'%0.2f',分隔符为','
|}
{{了解更多
|[https://numpy.org/doc/stable/reference/routines.io.html Numpy 手册:输入输出]
}}
==索引==
==广播==
==通用函数==
通用函数(Universal functions),简称ufunc,是一种ndarrays以逐个元素的方式运行的函数,支持数组广播,类型转换和其他几个标准功能。也就是说,ufunc是函数的“向量化”包装器,该函数采用固定数量的特定输入并产生固定数量的特定输出。
{{了解更多|[https://numpy.org/doc/stable/reference/ufuncs.html Numpy 手册:通用函数]}}
===数学运算===
===三角函数===
===位运算函数===
===比较函数===




第26行: 第212行:
==资源==
==资源==
===官网===
===官网===
*[http://www.numpy.org/ NumPy 官网]
*Numpy 官网:https://numpy.org/
*[https://numpy.org/doc/stable/ NumPy 文档]
*Numpy 文档:https://numpy.org/doc/stable/
*Numpy 手册:https://numpy.org/doc/stable/reference/index.html
*Github 主页 :https://github.com/numpy/numpy
 
===教程===
*[https://www.runoob.com/numpy/numpy-tutorial.html 菜鸟教程:Numpy ]
*[https://www.numpy.org.cn/ numpy.org.cn:Numpy 文档翻译]


===书籍===
===书籍===
*《利用Python进行数据分析(原书第2版)》-韦斯·麦金尼
*《利用Python进行数据分析》 - 韦斯·麦金尼


==参考文献==
===文章===
*[https://zh.wikipedia.org/wiki/NumPy 维基百科:NumPy ]
*[https://zh.wikipedia.org/wiki/NumPy 维基百科:NumPy]


[[分类:数据分析]]
[[分类:数据分析]]

2021年7月21日 (三) 16:54的最新版本

NumPy是Python中科学计算的基本软件包。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

简介

时间轴

安装

pip安装

pip install NumPy

其他内置软件包

如果使用的是Anaconda等计算科学软件包,已经安装好了NumPy库。

导入NumPy

在脚本顶部导入,一般的NumPy导入方式如下:

import numpy as np

基础知识

数据类型

ndarray

NumPy提供了N维数组类型(N-dimensional array)即ndarray,它是NumPy的核心。这是一个表示多维度、同类型并且固定大小的数组对象。所有ndarray对象都有如下性质:

  • 数组的每个元素占用相同大小的内存块,并且所有块的解释执行方式都一样。
  • 数组中每个元素

了解更多 >> Numpy 手册:数组对象 Numpy 手册:ndarray对象


创建数组

常用创建数组方法:

命令 描述 格式 示例
array() 创建一个Numpy数组。 numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0, like=None) np.array([1,2,3]) 返回array([1, 2, 3]),将Python数组(列表)转化为Numpy数组(ndarray)。
arange() 等差数列的一维数组。 可指定区间和步长 numpy.arange(start=0, stop, step=1, dtype=None, *, like=None) 可指定区间和步长,区间左闭右开。 np.arange(2) 返回array([0, 1])
np.arange(6,11,step=2) 返回array([ 6, 8, 10])
linspace() 等差数列的一维数组。 可指定区间和个数,区间左闭右闭。 numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0) np.linspace(1,2,num = 2) 返回array([1., 2.])
np.linspace(1,100,num = 3) 返回array([ 1. , 50.5, 100. ])
random.randint() 随机整数的一维数组。可指定区间和个数,区间左闭右开。 random.randint(low, high=None, size=None, dtype=int) np.random.randint(0,100,size = 10) 返回有10个元素的一维数组,值为0到100(不包含)的随机整数。
random.rand() 指定形状的数组,值为0到1之间均匀分布的随机值(左闭右开) random.rand(d0, d1, ..., dn) np.random.randint(2,3) 返回一个形状2x3的随机数组。
random.randn() 指定形状的数组,值为标准正态分布随机值。 random.randn(d0, d1, ..., dn) np.random.randn(2,3) 返回一个形状2x3的随机数组。
random.standard_normal() 指定形状的数组,值为标准正态分布随机值。与random.randn()函数类似,参数不同。 random.standard_normal(size=None) np.random.standard_normal(size=(2,3)) 返回一个形状2x3的随机数组。
random.normal() 指定形状的数组,值为正态分布随机值。loc设置正态分布均值,scale设置标准差。 random.normal(loc=0.0, scale=1.0, size=None) np.random.normal(loc=80, scale=6, size=(3,60)) 返回一个形状3x60的随机数组。
ones() 返回一个使用1填充的并按指定形状和数据类型生成的新数组。 numpy.ones(shape, dtype=None, order='C', *, like=None) np.ones(2) 返回array([1., 1.]),是一维有2个元素的数组。
np.ones((2,3)) 返回二维每维有3个元素的数组。
ones_like() 返回一个使用1填充,形状和数据类型与给定数组一样的新数组。 numpy.ones_like(a,dtype = None,order ='K',subok = True,shape = None ) np.ones_like(nd1) 返回一个数组形状和数据类型与nd1一样,值使用1填充。
zeros() 返回给定形状和类型的新数组,并用0填充。 numpy.zeros(shape, dtype=float, order='C', *, like=None) np.zeros(2) 返回array([0., 0.]),是一维有2个元素的数组。
np.zeros((2,3)) 是二维每维有3个元素的数组。
zeros_like() 返回一个使用0填充,形状和数据类型与给定数组一样的新数组。 numpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None) np.zeros_like(nd1) 返回一个数组形状和数据类型与nd1一样,值使用0填充。
full() 返回给定形状和类型的新数组,并用fill_value填充。 numpy.full(shape, fill_value, dtype=None, order='C', *, like=None) np.full((2,3),fill_value=3.14) 返回形状为2x3,值为3.14的数组
full_like() numpy.full_like(a, fill_value, dtype=None, order='K', subok=True, shape=None)
empty()
empty_like()

了解更多 >> Numpy 手册:数组创建示例 Numpy 手册:随机数


数组属性

常用属性:

属性 描述
ndarray.shape 数组形状
ndarray.ndim 数组的维数
ndarray.size 数组尺寸,即维数乘以每维元素个数。
ndarray.dtype 数组元素的数据类型。
ndarray.itemsize 一个数组元素的长度(以字节为单位)。

了解更多 >> Numpy 手册:数组属性


复制和视图

输入输出

命令 格式 描述
load() 加载.npy或.npz文件,当加载含有多个数组的npz文件时,加载后使用['存储的某个键']获取某个数组。 numpy.load(file,mmap_mode = None,allow_pickle = False,fix_imports = True,encoding ='ASCII' ) np.load('test.npz')['np2']
save() 将数组保存到.npy文件。 numpy.save(file, arr, allow_pickle=True, fix_imports=True) np.save('test.npy', np2) 保存np2数组到当前文件夹的test.npy中。
savez() 将多个数组以未压缩.npz格式保存到单个文件中。 numpy.savez(file, *args, **kwds) np.savez('123.npz', a=a, np2=np2) 保存a和np2两个数组到123.npz文件中
savez_compressed() 将多个数组以压缩.npz格式保存到单个文件中。 numpy.savez_compressed(file, *args, **kwds)
loadtxt() 从文本文件读取数组。 numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes', max_rows=None, *, like=None) np.loadtxt('test.txt',delimiter=',') 读取test.txt文件中的数组,分隔符为','。
savetxt 将数组保存到文本文件。 numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header=, footer=, comments='# ', encoding=None) np.savetxt('test.txt', nd1, fmt='%0.2f', delimiter=',') 保存nd1数组到test.txt文件中,格式为'%0.2f',分隔符为','

了解更多 >> Numpy 手册:输入输出


索引

广播

通用函数

通用函数(Universal functions),简称ufunc,是一种ndarrays以逐个元素的方式运行的函数,支持数组广播,类型转换和其他几个标准功能。也就是说,ufunc是函数的“向量化”包装器,该函数采用固定数量的特定输入并产生固定数量的特定输出。

了解更多 >> Numpy 手册:通用函数


数学运算

三角函数

位运算函数

比较函数

资源

官网

教程

书籍

  • 《利用Python进行数据分析》 - 韦斯·麦金尼

文章