一、numpy认识
NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了Python的GIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库!
二、numpy安装
1.建议使用Anaconda安装,包含了比较全面的常用库和科学计算使用的库
这里贴上Anaconda,win下安装较为简单,官网下载exe文件,一路下一步,关于32位或者64位,依据需要来。
linux版本的,网络上方法也比较多,在此就细讲,本篇主要以使用方法总结为主。
Anaconda下载地址:https://www.anaconda.com/download/
修改Anaconda中的python版本:conda installl python='版本号'
2.pip安装
安装好python后,pip命令安装即可
或下载whl(适用于win系统)文件,网址贴这里,进去选择对应的python版本即可
https://www.lfd.uci.edu/~gohlke/pythonlibs/
三、基本使用方法
1.数组的创建
①array(list)
可以使用array(list)的方式创建数组,如
a = np.array(range(10))
print(a)
print(type(a))
>>>[0 1 2 3 4 5 6 7 8 9]
>>><class 'numpy.ndarray'>
即可创建出0-9的数组
②arange()
b = np.arange(10)
print(b)
print(type(b))
>>>[0 1 2 3 4 5 6 7 8 9]
>>><class 'numpy.ndarray'>
可以得到与上例中相同的结果
2.数组的数据类型
与python的内置数据类型不同,在numpy中,包含了更多中的专用的数据类型。
①在默认情况下,使用numpy生成数组的数据类型默认为系统的位数,如系统是64位系统,默认生成的int类型的数据则是int64类型,数据类型可以在生成时指定,如:
c = np.arange(10,dtype="int8")
print(c)
print(c.dtype)
>>>[0 1 2 3 4 5 6 7 8 9]
>>>int8
即可指定生成的数据为int8类型,可用于节约内存使用
下图介绍一下numpy数组中的数据类型:
在进行数据类型指定时,即可以使用类型,也可以使用类型代码
②整体取小数
与python中的round的方法类似,为数据取小数
d = np.array([random.random() for i in range(10)])
e = np.round(d,2)
print(d)
print(d.dtype)
print(e)
>>>[0.25052575 0.29341821 0.04147264 0.77327443 0.84966375 0.74830381 0.52754255 0.41674166 0.12828997 0.85464233]
>>>float64
>>>[0.25 0.29 0.04 0.77 0.85 0.75 0.53 0.42 0.13 0.85]
3.数组的轴(axis)概念
数组的轴,也可以用来指维度,在给数组提升维度时,reshape方法可以将轴的顺序设定好,也可以通过shape方法来查看数组的形状,其顺序,即为轴的顺序,可以有多个维度的数组,并不局限为1、2、3维,只是常用的是这几个维度的数组。
①一维数组的轴
在一维数组中,仅有一个轴,即0轴。
②二维数组的轴
在二维数组中,存在两个轴,即0轴和1轴,参见下图
②三维数组的轴
与二维数组同理,只是多了一个轴,即多了一个维度
4.多维数组的计算
多维数组的计算,可以参照本人整理的这篇文章numpy学习——难点解析(一)多维数组的广播计算方式
5.用numpy读取本地数据
一般情况下,多会使用pandas取读取大量数据,功能更为强大,这里介绍numpy仅是介绍该模块有此功能,建议使用pandas去读。
介绍下numpy的读取方法:
难点参数详解:
关于转置,简单解释就是来说以左上角和右下角的数据执行中心对称的转换,即行变为列,列变为行。
转置的三种方法,当然不仅是二维数组可以转置,二维以上的多维数组都是可以的,另外,关于转置,可跳转至该文章进行理解numpy学习——难点解析(二)多维数组转置解释: