(1)概念
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。
(2)优势
其开源免费、编码效率高、执行效率高、扩展性好
(3)安装
可以使用pip install numpy进行安装,当然,如果我们的计算机中已经安装好了Anaconda,那就不需要安装了,Anaconda会帮我们安装许多库,其中就有Numpy库
Python 本身支持的数值类型有 int(整型,python2 中存在 long 长整型)、float(浮点型)、bool(布尔型) 和 complex(复数型)。
而 Numpy 支持比 Python 本身更为丰富的数值类型,细分如下:
在 Numpy 中,上面提到的这些数值类型都被归于 dtype(data-type) 对象的实例。
我们可以用 numpy.dtype(object, align, copy) 来指定数值类型。而在数组里面,可以用 dtype= 参数。
拓展:np.float32:在一些老牌公司里,被叫作E8M23
np.float64:被叫作E11M52
在jupyter上操作:
读取图片:
运行结果:
查看形状:
展示图片:
将图片由.jpg格式转换为.png格式:
jpg的取值范围:0-255,png的取值范围:0-1
所以我们不能直接修改后缀名
保存图片:
运行结果:
(1)简介
numpy中最重要的一个形式叫ndarray,n:表示的是n个,d:dimension 维度,array:数组
(2)参数类型
Numpy 中,ndarray 类具有六个参数,它们分别为:
(3)创建ndarray
创建ndarray最简单的操作:
但在 numpy 中,我们一般主要通过以下 5 种途径创建数组,它们分别是:
从 Python 数组结构列表,元组等转换。
使用 np.arange、np.ones、np.zeros 等 numpy 原生方法。
从存储空间读取数组。
通过使用字符串或缓冲区从原始字节创建数组
使用特殊函数,如 random。
在 numpy 中,我们使用 numpy.array 将列表或元组转换为 ndarray 数组。其方法为:
numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
其中,参数:
object:列表、元组等。
dtype:数据类型。如果未给出,则类型为被保存对象所需的最小类型。
copy:布尔来写,默认 True,表示复制对象。
列表,元组都叫序列
哪些能转换和不能转换???
- yes : list tuple range
- no : dict set generator str num function class model
除了直接使用 array 方法创建 ndarray,在 numpy 中还有一些方法可以创建一些有规律性的多维数。首先,我们来看一看 arange()。arange() 的功能是在给定区间内创建一系列均匀间隔的值。方法如下:
numpy.arange(start, stop, step, dtype=None)
你需要先设置值所在的区间,这里为 [开始, 停止),你应该能发现这是一个半开半闭区间。然后,在设置step步长用于设置值之间的间隔。最后的可选参数dtype可以设置返回ndarray` 的值类型。
举个例子:
linspace方法也可以像arange方法很像,创建数值有规律的数组。inspace用于在指定的区间内返回间隔均匀的值。其方法如下:
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
其中,参数:
start:序列的起始值。
stop:序列的结束值。
num:生成的样本数。默认值为50。
endpoint:布尔值,如果为真,则最后一个样本包含在序列内。
retstep:布尔值,如果为真,返回间距。
dtype:数组的类型。
举个例子:
logspace是线性生成,并且以什么为底
start从几开始 ,stop 到数字结尾, num 生成多少个数 ,base 表示的是底数, 默认以10为底
numpy.ones 用于快速创建数值全部为 1 的多维数组。其方法如下:
numpy.ones(shape, dtype=None, order=‘C’)
其中,参数:
shape:用于指定数组形状,例如(1, 2)或 3。
dtype:数据类型。
order:{‘C’,‘F’},按行或列方式储存数组。
举个例子:
zeros 方法和上面的 ones 方法非常相似,不同的地方在于,这里全部填充为 0。zeros 方法和 ones 是一致的。
numpy.zeros(shape, dtype=None, order=‘C’)
其中,参数:
shape:用于指定数组形状,例如(1, 2)或3。
dtype:数据类型。
order:{‘C’,‘F’},按行或列方式储存数组。
举个例子:
numpy.full用于创建一个自定义形状的数组,可以自己指定一个值,该值填满整个矩阵。
numpy.full(shape,fill_value=num)
举个例子:
numpy.eye 用于创建一个二维数组,其特点是k 对角线上的值为 1,其余值全部为0。方法如下:
numpy.eye(N, M=None, k=0, dtype=
#k表示从下标第几个开始
其中,参数:
N:输出数组的行数。
M:输出数组的列数。
k:对角线索引:0(默认)是指主对角线,正值是指上对角线,负值是指下对角线。
举个例子:
np.diag构建对角矩阵 np.diag(v,k=0)参数为列表即可
其中,参数:
v可以是一维或二维的矩阵
k<0表示斜线在矩阵的下方
k>0表示斜线在矩阵的上方
np.random.randint(low=0,high=150,size=(5,4))
其中,参数:
low 表示的是最小值
high 表示最大值
size 是一个元祖类型
np.random.randn(10,5)
没有固定的参数,每多加一个数字,代表多真假一个维度
np.random.random(size=(456,730,3))
其中,参数:
size 表示形状 random随即生产的范围是0-1之间
np.random.normal(loc=170,scale=100,size=50)
normal也是一个常态分布的方法
生成一个一维数组
其中,参数:
location 是定位的的值
scale 是波动值
size 是数据长度
每一个数据,都是一个维度
rand 和 random 的区别:random 需要 size来描述形状,而rand只需要我们直接给值,通过值的数量来确定形状
np.random.rand(d1,d2,dn)
csv,dat是一种常用的数据格式化文件类型,为了从中读取数据,我们使用:
使用 numpy.save 与 numpy.load 保存和读取:
ndim 数组的维度 (自己会计算)
shape 形状(5,4,3)
size 数组的总长度
dtype 查看数据类型
dtype来定义数据的类型
怎么修改数据类型? ndarray.astype()
ndarray.T用于数组的转置,与 .transpose() 相同
转置矩阵
ndarray.imag 用来输出数组包含元素的虚部。
imaginary number 虚数
ndarray.real用来输出数组包含元素的实部。
real number 实数