赞
踩
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。
NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:
import numpy as np # 通常都采用np作为简写名
# 可用内置函数version()检测其版本
np.__version__
**# 列表 —— 数据类型可以不同,不过处理效率不高,速度慢** li = list(range(10)) # li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] li[5] = 'Hello Python' # 将li的第六个元素该为字符型的'Hello Python', 此时li = [0, 1, 2, 3, 4, 'Hello Python', 6, 7, 8, 9] **# 数组 —— array 数据类型一定要是相同的,处理效率要比list高。但是矩阵操作不太方便了** 构建方式: array.array('字符(数据指明类型)', 列表生成式) import array arr = array.array('i', list(range(10))) # arr : array('i', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) arr = array.array('f', list(range(10))) # arr : array('f', [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]) arr = array.array('t', list(range(10))) /* ValueError Traceback (most recent call last) <ipython-input-19-837f57a40226> in <module> ----> 1 arr = array.array('t', list(range(10))) ValueError: bad typecode (must be b, B, u, h, H, i, I, l, L, q, Q, f or d) */
只需调用 NumPy 的 array 函数即可:
PS:
[2 3 4]显然是数组
但是初始化不能: b = [2 3 4]
因为这样会:SyntaxError: invalid syntax
必须用函数初始化!
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
【ndarray 对象由计算机内存的连续一维部分组成,并结合索引模式,将每个元素映射到内存块中的一个位置。内存块以行顺序(C样式)或列顺序(FORTRAN或MatLab风格,即前述的F样式)来保存元素。】
PS:
向量、矩阵均由array函数创建,区别在于
向量 v = array( [逗号分隔的元素] )
矩阵 M = array( [ [ ], [ ],…,[ ] ) ====> "([ ])“里面有多少个”[ ]"取决于矩阵的行数
注意:
本质上,还是数组!所以,元素类型必须是一致的!
不过,仍然有可兼容类型的自动转换!
import numpy as np 构建一个一维矩阵(一维数组) a = np.array([1,2,3]) print(a) # [1 2 3] print(type(a)) # 对象类型: numpy.ndarray print(a.dtype) # 数据类型: dtype('int32') print(a.shape) # 数组各个维度的长度: (3,) —— shape是一个元组 print(a.ndim) # 数组维度: 1 # 利用列表生成式来创建数组 nparr = np.array(list(range(10))) print(nparr) # array([0 1 2 3 4 5 6 7 8 9]) # 数组元素的类型必须是相同的! nparr[5] = 'Hello Python' /* --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-28-c4124591e6eb> in <module> ----> 1 nparr[5] = 'Hello Python' ValueError: invalid literal for int() with base 10: 'Hello Python' */ # 类型的自动转换(创建时自动转换成最高的类型,更改时自动转换成数据数组原来的数据类型) nparr[5] = 55.23 # 原本是整型数据,现把其中一个改成浮点型,会自动向下取整 print(nparr) # array([ 0 1 2 3 4 55 6 7 8 9]) t = np.array([1.0, 2.3, 6.4, 8.9]) # 数组原本的数据类型是浮点型,现要把其中一个改成整型,所以会自动转换。 t[3] = 8 print(t) # array([1. , 2.3, 6.4, 8. ]) nparr2 = np.array([1, 2, 3.0]) # 以兼容的数据创建矩阵,数据类型便是最高的那级 print(nparr2.dtype) # dtype('float64') nparr3 = np.array([1, 2, 3], dtype=float) # 可以指定元素类型 print(nparr3) # array([1., 2., 3.]) # 构建一个二维矩阵 a = np.array([[1, 2], [3, 4]]) # "([])"里有两个“[]” print (a) ''' [[1, 2] [3, 4]] ''' # 设置最小维度 —— 设置ndim import numpy as np a = np.array([1,2,3,4,5], ndmin = 2) print (a) # [[1, 2, 3, 4, 5]] # 使用zero(浮点零)/ones(浮点1)/empty(未初始化,系统随机给数据)创建数组:根据shape来创建 # numpy.empty(shape, dtype = float, order = 'C') x = np.zeros(6) # [0. 0. 0. 0. 0. 0.] x = np.zeros((2,3)) ''' [[0. 0. 0.] [0. 0. 0.]] ''' x = np.ones(3) # [1. 1. 1.] x = np.empty((3,3)) ''' [[0.00000000e+000 0.00000000e+000 0.00000000e+000] [0.00000000e+000 0.00000000e+000 3.04344438e-321] [7.56593016e-307 1.11261027e-306 4.84184333e-322]] '' y = np.empty(3) # [1. 1. 1.]
numpy.asarray
numpy.asarray 类似 numpy.array,但 numpy.asarray 参数只有三个,比 numpy.array 少两个。
numpy.asarray(a, dtype = None, order
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。