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的大数据分析基础及实战》