数据分析-机器学习-第三方库使用基础
Numpy
numpy(Numerical Python) 是科学计算基础库,提供大量科学计算相关功能,比如数据统计,随机数生成等。其提供最核心类型为多维数组类型(ndarray),支持大量的维度数组与矩阵运算, numpy支持向量处理ndarray对象,提高程序运算速度。numpy、pandas和matplotlib是数据分析、机器学习领域十分常用的第三方库。
在Python中,一切皆对象,这意味着甚至是简单的整数(Int)都是对象,对象就需要计算机使得它工作,我们称之为"Boxed Ints"。相反,Numpy使用原始数值类型(floats, ints)使得存储和计算更有效率。Numpy(Numerical Python)是一个在Python领域做数值计算非常重要的库,Pandas、Matplotlib、Statmodels、Scikit-learn和其它一些科学计算库都依赖Numpy。
numpy的安装方式:
1.pip安装 使用清华源下载速度会更快pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
如需要指定numpy版本 pip install numpy==x.x.x -i https://pypi.tuna.tsinghua.edu.cn/simple
想安装 numpy 版本 1.21.0,可以使用以下命令:
pip install numpy==1.21.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
2.anaconda安装 conda命令行:conda install numpy
测试安装是否成功
import numpy as np #同时导入numpy
或者
在jupyter notebook环境下学习numpy
导入numpy
import numpy as np
1.array创建数组
numpy模块的array函数即array(),可以生成多维数组。例如,如果要生成一个二维数组,需要向array函数传递一个列表类型的参数。每一个列表元素是一维的ndarray类型数组,作为二维数组的行。另外,通过ndarray类的shape属性可以获得数组每一维的元素个数(元组形式),也可以通过shape[n]形式获得每一维的元素个数,其中n是维度,从0开始。
# 基础数组array
a=np.array([1, 2, 3, 4])
b=np.array([0, .5, 1, 1.5, 2])
print(a[0],a[1])
# 切片
print(a[0:])
print(a[1:3])
print(a[1:-1])
print(a[::2])
print(b)
print(b[0],b[2],b[-1]) # return tuple
test_tp = (b[0],b[2],b[-1])
print(type(test_tp))
print(b[[0, 2, -1]]) # return ndarray
# 二维数组
c = np.array([
[1,2,3],
[4,5,6],
[7,8,9]
])
print(c)
print('c数组的维度:',c.shape)
ndmin参数的使用:如果没有指定ndmin(默认为0),则生成的数组的维度根据传进来的第一个参数来决定。如果指定了ndmin,则指定生成数组的最小维度
d = np.array([1,2,3,4,5,6],ndmin=3)
print(d)
print(d.shape)
dtype指定了数组元素的数据类型
e = np.array([1,2,3,4,5,6],dtype=np.float64) #np.float32 np.float.64
print(e)
2.arange创建数组
a1 = np.arange(0,8,dtype=int) # 左闭右开
a1
arange创建二维数组,通过array函数与arange函数配合使用创建二维数组
b1 = np.array([
np.arange(1,5),
np.arange(5,9),
np.arange(9,13),
])
print(b1)
print(b1.shape)
如果列的规模不全相同,会报错
3.随机数创建
numpy中的random模块包含了很多函数可以用来产生随机数。
4.ndarray对象
1.可以使用NumPy的random模块中的函数创建随机数数组,而且使用NumPy创建的数组都是ndarray对象。
2.ndarray是由多个同类型的数据组成的多维数组,每个元素在内存中占据相同大小的空间。它由以下几个主要部分组成:一个指向实际数据的指针、描述数据类型的dtype、表示数组形状的shape元组以及跨度(stride)信息。
3.创建ndarray对象,最常见的是使用numpy.array()函数。
4.ndarray中的每个元素都必须具有相同的数据类型,这是为了优化内存使用和提高运算效率。
# numpy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以下标0为开始,进行集合中元素的索引。
# 先随机创建三个数组
f1 = np.random.randint(10,size=6)
f2 = np.random.randint(10,size=(3,4))
f3 = np.random.randn(3,4,5)
print("ndim:",f1.ndim,f2.ndim,f3.ndim,sep='-----') # 数组的维度数量
print("shape:",f1.shape,f2.shape,f3.shape,sep='-----') #数组的形状
print("dtype:",f1.dtype,f2.dtype,f3.dtype,sep='-----') #数组中每个元素的数据类型
print("size:",f1.size,f2.size,f3.size,sep='-----') # 数组中包含元素的个数
print("itemsize:",f1.itemsize,f2.itemsize,f3.itemsize,sep='-----') # 数组中每个元素的大小,以字节为单位
5.zeros函数创建数组
np.zeros(shape, dtype = float, order = 'C')
1.shape: 这是一个整数或整数元组,定义了返回数组的形状。例如,(2, 3) 会生成一个 2x3 的二维数组。如果传入的是单个整数,则生成一维数组。
2.dtype: 可选参数,表示数组中元素的数据类型。默认值是 float,即浮点数。你可以根据需要指定其他数据类型,如 int, complex, bool 等。
3.order: 可选参数,表示多维数组在内存中的存储顺序。默认值是 'C'(行优先,C-style)。另一个选项是 'F'(列优先,Fortran-style),这在某些情况下可以提高性能。
# 创建一个包含6个元素的全0的一维数组
g1 = np.zeros(6)
g1
# 创建一个3行4列的全0数组,设置元素类型为整数
g2 = np.zeros([3,4],dtype=int)
print(type(g2[0,0]))
g2
# 形状为2x2的全0数组
g3 = np.zeros([2,2])
g3
6.ones函数创建数组
numpy.ones(shape, dtype = None, order = 'C')
参数含义同zeros
h1 = np.ones(6)
h1
h2 = np.ones([6,6],dtype=np.float32)
print(type(h2[1,1]))
h2
h3 = np.ones_like(h2)
# 仿照h2创建一个h3
h3
7.empty函数创建数组
numpy.empty(shape, dtype = float, order = 'C')
参数含义同zeros
i1 = np.empty([3,3],dtype=np.float64)
i1
创建一个指定形状和数据类型的数组,但不初始化数组中的元素。换句话说,np.empty 创建的数组包含的是未定义的垃圾值(即内存中的随机数据),而不是零或其他特定值。
i2 = np.empty([3,3],dtype=int)
i2
8.full()函数创建数组
full(shape,fill_value) 创建全为某个指定值的数组
j1 = np.full([3,3],2)
j1
# 仿照j1的形状,创建一个都是新指定数字的数组
j2 = np.full_like(j1,3)
j2
9.创建单位矩阵数组
单位矩阵从左上角到右下角的对角线上的元素均为1,除此以外全都 为0
。任何矩阵与单位矩阵相乘都等于本身且单位矩阵因此独 性在高等数学中也有广泛应。
eye(N, M=None, k=0, dtype=<class 'float'>, order='C')
N是行数,M是列数,其它参数含义也同zeros
k1 = np.eye(3,3,dtype=int)
k1
# M不指定时默认创建一个方阵
k2 = np.eye(3)
k2
10.linspace创建数组
linspace函数用于创建一个一维数组,数组是一个等差数列构成的
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
l1 = np.linspace(1,20,5)
l1
# endpoint=False时,生成的等差数列范围在1-19
l2 = np.linspace(1,20,5,endpoint=False)
l2
# endpoint=False 间隔 end-start/num -- 20-1/(5)=3.8
l3 = np.linspace(1,20,5,endpoint=False,retstep=True)
l3
11.logspace创建数组
logspace 函数用于创建一个于等比数列。
base是指定指数,不指定时默认为10
其它参数含义和linspace一样
# 从2的0次开始,到2的9次结束的一个等比数列,其中数列的长度为10
n1 = np.logspace(0,9,10,base=2)
n1
n2 = np.logspace(0,3,num=4)
n2