Python机器学习之NumPy的使用
程序员文章站
2023-12-27 18:12:51
...
NumPy是Python进行科学计算和数据分析的基本程序库,NumPy主要提供以下功能:
- 创建强大的N维数组对象
- 进行各种复杂的数值计算
- 实现线性代数、傅里叶变换和随机数的运算
安装NumPy的最好的方式是:pip install numpy
或者 pip install -U numpy
#安装最新版本
NumPy的主要对象是多维数组ndarray,ndarray指的是N维数组:一种由相同类型的元素组成的多维数组,元素数量是事先指定好的。元素的数据类型由dtype(data-type object)对象来指定,每个ndarray只有一种dtype类型。它的大小是固定的,创建好数组时一旦指定好大小,就不会再发生改变。
创建NumPy的数组对象可以使用numpy.ndarray(),也可以使用numpy.array()、zeros(),后一种方式更为常用
数组的创建流程:
import numpy as np
# 1.使用ndarray创建,以零zero填充的对象
x = np.ndarray((3,5)) #表示一个二维数组,相当于三行五列
# 2.使用array()创建
x2 = np.array([1,2,3,4,5,6]) # 参数列表是list
x3 = np.array((1,2,3,4,5,6)) # 参数为元组tuple
# 3.使用zeros()创建
x4 = np.zeros((3,4)) # 所有元素初始化为0
# 4.使用ones()创建
x5 = np.ones((2,3)) # 所有元素初始化为1
# 5.使用empty创建
x6 = np.empty((2,3))
注意:NumPy数组在创建后大小已经固定,如果改变NumPy数组对象的大小,则系统将创建一个新数组并删除原来的数组
数组元素的访问:
- 一、基本元素的访问:
NumPy数组的元素是通过索引下标来进行访问的(索引下标是从0开始的)例子如下:
import numpy as np
arr1 = np.array([1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16])
x = arr1[2,2] # 对应 行 列
print(x) # 输出的是11
y = arr1[2]
print(y) # 输出的是一个数组[9,10,11,12]
建议使用arr1[x,y] 这种方式进行获取对应位置上面的元素
- 二、算数运算符的操作
可以将大多数的数学元素安抚应用于NumPy数组元素的计算(+=,-=,*=,%= 这些用来修改现有的数据而不是创建新数组)
在NumPy当中要实现类似于矩阵的乘积运算,可以是哦用@ 运算符来进行操作。
import numpy as np
# 这些操作符直接作用于数组的基本元素上面
a = np.array([10,20,30,40])
b = np.arange(4) # 创建一个0,1,2,3 的数组ndarry
x1 = a - b
print(x1) # 输出是:[9,19,29,39]
x2 = a * b
print(x2) # 输出是:[0,20,60,120]
x3 = b**3 # a的三次幂
print(x3) # 输出是:[0,1,8,27]
# 下面这些操作符将会直接改变数组
a += 3
b *= 3
- 三、索引、切片、迭代访问元素
Numpy中数组的切片:在各个维度上单独切片,如果某维度都保留,则直接使用:冒号,不指定起始值和终止值
import numpy as np
arr = np.arange(10)
# 访问单一元素:
x1 = arr[2]
print(x1)
# 访问一个范围的元素
x2 = arr[2:5] # 左闭右开
print(x2) # 输出的是[2,3,4]
# 访问特定元素的值
x3 = arr[1:8:3] # 从索引一到索引八,每次经过三个步长,最后一个是步长,如果步长为-1标识逆序输出
print(x3)
# 迭代访问数组元素
for i in arr
print(i)
NumPy统一操作函数列表
arange(start,stop,step) # 在给定区间内均匀间隔的数组,左闭右开,step为步长值
array(object) # 按照序列对象object创建数组,object可以使list,tuple,另一个NumPy数组
copy(a,order ='K') # 返回数组a的一个副本
fromfile(file,dtype=float,count=-1,sep='') # 从一个数据文件中创建数组
linspace(start,stop,num=50,endpoint=true) # 指定开始结束值创建爱你一维数组,endpoint关键字指定是否包括终值,缺省设置是包括终值
logspace() # 和linspace类似,不过它创建等比数列
np.logspace(0, 2, 5) # 0表示10的零次方,2表示10的二次方,5表示生成的数组元素总数
以上是NumPy库的基本使用,详细的使用还需要去官网查看对应的函数信息。