三、机器学习基础知识:Python常用机器学习库(Numpy第一部分)

文章目录

  • 1、Numpy定义
  • 2、ndarray对象
  • 3、Numpy数据类型
  • 4、Numpy数组类型

1、Numpy定义

Numpy是Numberical Python的简称,是用来进行高性能计算与分析的基础包,是Python中重要的扩充库。它支持高维度数组与矩阵运算,也针对数组运算提供了大量的数学函数库。Numpy运算效率极好,是大量机器学习框架的基础库。
使用Numpy,开发人员可以很方便地执行数组运算、逻辑运算、傅里叶变换和图形图像操作。Numpy数组地运算效率优于Python的标准List类型,而且在代码中使用Numpy可以省去很多繁琐的操作语句,代码更将简洁。
一般使用如下方式引入Numpy库:

import numpy as np

2、ndarray对象

Numpy的强大功能在于底层的ndarray结构,该结构可以生成N维数组对象。
ndarray对象是一系列同类型数据的集合,下标索引从0开始,是一个用于存放同类型元素的多维数组。ndarray中的每个元素在内存中都具有相同大小的存储区域。
ndarray可以通过对数组建立索引或切片来访问数组内容,也可以使用ndarray的方法和属性来访问和修改ndarray内容。
ndarray中的相关属性如下:

  1. shape(数组形状):表示数组各维大小的整数元组。
  2. dtype(数据类型):描述数组的类型对象。
  3. data(数组数据):一个指向内存中数据的指针。
  4. strides(跨度):表示当前维度移动到下一个位置需要跨越的字节数,即当前维度的宽。
  5. order(数组顺序):访问数组元素的主顺序,“C”为行主序,“F”为列主序。

在Numpy模块中,提供了ndarray()和array()两个函数,都可以用来建立一个ndarray。其中ndarray函数属于底层的方法,一般都是使用darray()函数进行创建,创建的语法格式如下:

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

参数介绍:

  1. object:数组或嵌套的数列。
  2. dtype:数组元素的数据类型。可选。
  3. order:创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)。
  4. ndmin:指定所生成数组应具有的最小维度。
    数组的创建与基本操作:
import numpy as np
a = np.array([1,2,3])  #创建一维数组并输出
print(a)
print(type(a))

在这里插入图片描述

a = np.array([[1,2],[3,4]]) #创建二维数组并输出
print(a)
print(a.shape)

在这里插入图片描述

a = np.array([1,2,3,4],ndmin=2) #创建数组并设置数组的最小维度为2
print(a)

在这里插入图片描述

a = np.array([1,2,3,4],dtype=np.complex128) #创建数组并设置其数组数据类型为complex128
print(a)

在这里插入图片描述

3、Numpy数据类型

Numpy内置了24种数组标量类型,也支持Python的基本数组类型。

名称 描述
bool_ 布尔型,True或False
int8 有符号字节类型,范围为-128~127
int16 有符号16位整数,范围为-32768~32767
int32 有符号32位整数
int64 有符号64位整数
unit8 无符号字节类型,范围为0~255
unit16 无符号16位整数,范围为0~65535
unit32 无符号32位整数
unit64 无符号64位整数
float_ 64位浮点数,同float64
float16 16位浮点数
float32 32位浮点数
float64 64位(双精度)浮点数
complex_ 128位复数,同complex128
complex64 64位复数
complex128 128位复数

对于每种数据类型,Numpy还提供了同名的类型函数,如float16()、int32()等,可以用来创建该类型的数据对象,也可以用来转换数据对象的数据类型。
类型函数的使用:

x=np.int32(2)
print('x为:',x)
print('x对象的data属性:',x.data)
print('x对象的size属性:',x.size)
print('x对象的维数:',x.ndim)
y=np.bool_(x)
print('转换为bool类型的x为:',y)
z=np.float16(y)
print('转换为folat16类型的y为:',z)

三、机器学习基础知识:Python常用机器学习库(Numpy第一部分)_第1张图片

除了类型函数外,通常情况下一般建议使用Numpy种的dtype对象指定数据类型。
构建dtype对象的语法如下:

numpy.dtype(object,align,copy)

相关参数属性如下:

  1. object:要转换为dtype对象的数据对象。
  2. align:如果为True,则填充字段使其类似C的结构体。
  3. copy:指明是否复制dtype对象,如果为False,则是对内置数据类型对象的引用。

使用dtype对象设置数据类型:

x=np.int32(1)
y=np.array(x,dtype="bool_")
print('转换为bool类型的x为:',y)
z=np.array(y,dtype="float16")
print('转换为folat16类型的y为:',z)

在这里插入图片描述

有些数据类型有简写,例如int8,int16,int32,int64四种数据类型可以使用字符串’i1’,‘i2’,‘i4’,'i8’简写代替。
使用i4字符串代替int32类型:

dt=np.dtype('i4')
print(dt)

在这里插入图片描述

在数组建立之后,也可以使用Numpy中数组附带的astype()方法修改其数据类型。语法格式如下:

array.astype(dtype,order='K'.casting='unsafe',subok=True,copy=True)

使用astype()修改数据类型:

x=np.int32(1)
y1 = x.astype("float32")
print('转换为folat32类型的x为:',y1)
y2 = x.astype(np.float32)
print('转换为folat32类型的x为:',y2)

在这里插入图片描述

在上述语句中x.astype(float)和x.astype(np.float)运行结果相同。常见的Python对象与Numpy对象的对应表如下,其他数据类型没有与Python等效的对应表。

Python对象 dtype对象
int numpy.int_
bool numpy.bool_
float numpy.folat_
complex numpy.complex_

4、Numpy数组类型

在Numpy数组中,常用的术语主要有两个。
(1)轴(Axis):每个线性数组称为一个轴,轴即数组的维度(Dimensions)。例如,将二维数组看作一维数组,此一维数组中每个元素又是一个一维数组,则每个一维数组是NumPy 中的一个轴。第一个轴相当于底层数组,第二个轴是底层数组中的数组。
(2)秩(Rank):秩描述 NumPy 数组的维数,即轴的数量。一维数组的秩为 1,二维数组的秩为 2,以此类推。
例如[0,1,2]是一维数组,只有一个轴,其秩为1,轴长度为3。[[1,2,3],[3,4,5]]是一个二维数组,数组的秩为2,具有两个轴,其中第一个轴(维度)的长度为2,第二个轴(维度)的长度为3。
在使用的时候可以声明 axis。如果axis=0,表示按第0轴方向操作,即对每列进行操作;如果 axis=1,表示按第1轴方向操作,即对每行进行操作。
使用axis参数进行轴向操作:

arr1=np.array([[1,2,3],[4,5,6]]) 
print(arr1)
print(arr1.sum(axis=0)) #进行垂直(列)方向的求和
print(arr1.sum(axis=1)) #进行行方向的求和

在这里插入图片描述

此外在Numpy中ndarray具有关于数组的相关基本属性,可以通过相关参数进行查看,常见属性如下:

参数 属性
ndarray.ndim 秩、轴的数量
ndarray.shape 数组的形状
ndarray.size 数组元素的总个数
ndarray.dtype 数组元素类型
ndarray.itemsize 每个元素的大小
ndarray.data 实际数组元素

上述相关参数的使用:

arr2=np.array([[1,2,3],[4,5,6]]) 
print(arr2.ndim) #显示轴的数量
print(arr2.shape) #显示形状
arr2.shape=(3,2) 
print(arr2) #调整形状
print(arr2.size) #显示元素总个数
print(arr2.dtype) #显示数组元素类型
print(arr2.itemsize) #显示每个元素大小
print(arr2.data)  #显示实际数组元素

三、机器学习基础知识:Python常用机器学习库(Numpy第一部分)_第2张图片

此外还可以使用reshape函数对数组进行变形重构,调整数组形状,其语法格式如下:

numpy.reshape(arr,newshape,order='C')

使用reshape调整数组形状:

arr3 = np.array([1,2,3,4,5,6,7,8])
print(arr3.ndim) #显示秩
arr4 = arr3.reshape(2,2,2)
print(arr4)
print(arr4.ndim) #显示秩

三、机器学习基础知识:Python常用机器学习库(Numpy第一部分)_第3张图片
后续内容:
三、机器学习基础知识:Python常用机器学习库(Numpy第二部分)

你可能感兴趣的:(机器学习(Python),机器学习,人工智能,python,数据分析,数据挖掘)