1.NumPy简介及其使用
NumPy是一个功能强大的Python库,主要用于对多维数组执行计算,允许更高级的数据操作和数学计算。 它包括数学、逻辑、数组形状变换、排序、选择、I/O 、离散傅立叶变换、基本线性代数、基本统计运算、随机模拟等等。
机器学习模型:在编写机器学习算法时,需要对矩阵进行各种数值计算。例如矩阵乘法、换位、加法等。NumPy提供了一个非常好的库,用于简单(在编写代码方面)和快速(在速度方面)计算。NumPy数组用于存储训练数据和机器学习模型的参数。图像处理和计算机图形学:计算机中的图像表示为多维数字数组。NumPy成为同样情况下最自然的选择。实际上,NumPy提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。数学任务:NumPy对于执行各种数学任务非常有用,如数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于Python的MATLAB的快速替代。Numpy安装:在shell上使用以下命令:pip install numpy
2.Numpy基础知识
NumPy的数组类被称为ndarray。别名为 array。 请注意,numpy.array 与标准Python库类 array.array 不同,后者仅处理一维数组并提供较少的功能。 ndarray 对象则提供更关键的属性:
ndarray.ndim:数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。ndarray.shape:数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于有n行和m列的矩阵,shape将是(n,m)。因此,shape元组的长度就是rank或维度的个数 ndim。ndarray.size:数组元素的总数。这等于shape的元素的乘积。ndarray.dtype:一个描述数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。另外NumPy提供它自己的类型。例如numpy.int32、numpy.int16和numpy.float64。ndarray.itemsize:数组中每个元素的字节大小。例如,元素为 float64 类型的数组的 itemsize 为8(=64/8),而 complex32 类型的数组的 itemsize 为4(=32/8)。它等于 ndarray.dtype.itemsize 。ndarray.data:该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引访问数组中的元素。
3.NumPy的使用及其方法
# -*- coding: utf-8 -*-
"""
Author : Jason
"""
__author__ = 'Jason'
'''
NumPy是Python的一个用于科学计算的基础包,属于Python的第三方库。
NumPy包的核心是ndarray对象。它封装了n维同类数组,特别注意这里的数组必须是同类型。
个人理解: 结合现代中的矩阵最好理解了
使用前先安装 pip3 install numpy
'''
import numpy as np
data1 = [1,2,3,4,5]
array1 = np.array(data1)
print(type(array1),"\n",array1)
'''
<class 'numpy.ndarray'>
[1 2 3 4 5]
'''
data2 = [[1,2,3],[4,5,6]]
array2 = np.array(data2)
print(array2)
'''
[[1 2 3]
[4 5 6]]
'''
#查询内部元素类型
print(array1.dtype) # int32
print(array2.dtype) # int32
#转换数据类型
print(array1.astype("str")) # ['1' '2' '3' '4' '5']
print(array1.astype("str").dtype) # <U11
#数组的运算
print(array1 + 1) # [2 3 4 5 6]
print(array1 * 2) # [ 2 4 6 8 10]
print(array1 * array1) # [ 1 4 9 16 25]
print(array1 / 5) #[0.2 0.4 0.6 0.8 1. ]
#array数组的访问方式和Python列表的访问方式相同,下标索引切片等
print(array1[3]) # 4
print(array1[0:2]) # [1 2]
print(array1[:2]) # [1 2]
print(array1[-2:]) # [4 5]
#矩阵元素的个数
print(array1.size) # 5
print(array1.itemsize) #一个元素的长度(以字节为单位)
#NumPy自带函数创建ndarray数组
data1 = np.ones(4) # 自带函数ones(参数一维个数)
data2 = np.zeros(4) # 自带函数zeros(参数一维个数)
data3 = np.random.random(4) # 自带函数random.random(参数一维个数)
print("data1,data2,data3:",data1,data2,data3)
data4 = np.full(3,4) # [4 4 4]
print(data4) # 创建一个长度为3,元素全为4的数组
data5 = np.eye(4) # 创建一个正方形4*5单位矩阵,对角线为1,其余为0
print(data5)
data6 = np.linspace(0,10,3) ##第一个值为起始值,第二个值为结束值,第三个值为元素个数
print(data6) #[0 5 10]
data7 = np.linspace((10,10,10),(0,0,0),3)#第一个值为起始值,第二个值为结束值,第三个值为元素个数,这里把一维数组看作一个元素比较好理解
print(data7)
'''
[[10. 10. 10.]
[ 5. 5. 5.]
[ 0. 0. 0.]]
'''
#数组维度变换
'''
np.reshape(shape) 不改变数组元素,返回一个shape形状的数组,原数组不变
np.resize(shape) 同上,但是是修改了原数组
np.swapaxes(ar1,ar2) 将数组n各维度中的两个维度进行调换
np.flatten() 对数组降维,返回一维数组,原数组不变
'''
#获取平均值mean(),最大值max(),最小值min(),和sum()
print(array1.mean()) #3
print(array1.min()) #1
print(array1.max()) #5
print(array1.sum()) #15
参照:《基于Python的大数据分析基础及实战》