概述
-
numpy是Python常用库之一,numpy支持大量的维度数组和矩阵运算,对数组运算提供了大量的数学函数库!
-
numpy比Python列表更具优势,其中一个优势便是速度。在对大型数组执行操作时,numpy的速度比Python列表的速度快了好多。因为numpy数组本身能节省内存,并且numpy在执行算术、统计和线性代数运算时采用了优化算法。
-
numpy的另一个强大功能是具有可以表示向量和矩阵的多维数组数据结构。numpy对矩阵运算进行了优化,使我们能够高效地执行线性代数运算,使其非常适合解决机器学习问题。
-
与Python列表相比,numpy具有的另一个强大优势是具有大量优化的内置数学函数。这些函数使你能够非常快速地进行各种复杂的数学计算,并且用到很少代码(无需使用复杂的循环),使程序更容易读懂和理解。
numpy中数组的创建
一维数组的创建
在使用库前,先导入库
import numpy as np
np.array 指定数组基本元素类型
a=np.array([1,2,3,4])
np.arrange函数,取值左包含右不包含
np.arange(10)
#array([0,1,2,3,4,5,6,7,8,9])
np.arange(0,6,0.5)
#array([0,0.5,1,1.5,2,2.5,3,3.5,4,4.5])
np.arange(5,0,-1)
#array([5,4,3,2,1])
np.linspace 默认是取值左右都包含,这个函数里面有一个参数endpoint,是一个布尔值,可以通过对这个参数的设定,来选择是否包含最后一个数值。
np.linspace(0,9,3)
#array([1,5,9])
np.linspace(1,9,3,endpoint=False)
#array([1,3.6666667,6.3333333])
二维数组的创建
b=np.array([[1,2,3],[4,5,6]])
c=np.array([[1,"2",3],[4,"5",6]])
d=np.array([[1,"2",3],["4",5,6]])
e=np.array([[1,"2",3],["4",5,6]],dtype="object")
#当不指定数据类型时,当有数字和字符串时,输出都是字符串类型
#当指定dtype='object'时,输入是什么类型,输出的也是什么类型
创建数组时候的注意事项
- 输入的数组要工整,否则会出现后续一系列处理问题
- 输入数组里面的元素最好是同一类型,如果不是同一类型,最好指定dtype=“object”,否则如果既不是同一类型,又没有指定数组类型为object,那么生成数组之后可能被强制转化为字符串
数组的属性
ndim属性,查看数组维度
a=np.array([[1,2,3],[4,5,6]])
a.ndim #返回2
shape属性 ,查看数组的形状,返回的是一个数组
a.shape #返回(2,3)
size属性,查看包含几个基本元素
a.size #返回6
dtype属性 ,查看数据类型
a.dtype #返回dtype('int32')
itemsize属性 ,查看每个字节占的内存
a.itemsize #返回4
#如果想查看数组实例的其他属性可以运行下面的代码
help(a)
缺失值问题
#np.nan是一个float类型的值
type(np.nan)
#定义一个含有缺失值的字符串数组
#方法一
#a的类型为object
a=np.array(["1","2",None])
print(a[2])
#方法二
a=np.array(["1","2",np.nan],dtype="object")
a
np.isnan函数
a=np.array([1,2,3,np.nan])
np.isnan(a)
#这个函数的参数不能是字符串,或者是字符串组成的数组,可以是一个数值或者数值组成的数组。返回False
一些特殊数组的快速创建
元素全部为0的数组
np.zeros((2,