python深度学习笔记(一)——numpy篇(上)
numpy基础(上)
在本节中,将记录一些简单的numpy操作,如文件读取、创建数组、数据判断、与非判断、强制类型转换、极值以及求和操作
首先让我们从引入numpy库开始:
import numpy
文件读取
在numpy中,有一个非常强大的文件读取函数:genfromtxt() 我们只需在括号内输入文件对应的路径,数据分割标准以及数据类型即可,实例如下:
data = numpy.genfromtxt("data.txt", delimiter=",", dtype=str)
示例文件data.txt中数据如下:
同时要注意,文件内的数据列数必须相同,否则会报错。
ValueError: Some errors were detected !
将读取到的数据类型及数据输出:
print(type(data))
print(data)
得到结果
创建一个numpy矩阵
在深度学习中,矩阵起着一个非常重要的作用。于是我们需要了解一些在numpy中创建矩阵的基本操作。
在numpy中,主要是使用numpy.array(list)来进行矩阵的创建。
创建一维矩阵
vector = numpy.array([1, 2, 3, 4, 5])
传入一个一维的list,numpy.array自动将其转换成一维矩阵,输出结果如下:
创建二维矩阵
two_dimensional_matrix = numpy.array([ # 二维
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
传入一个二维的list,numpy.array自动将其转换成一维矩阵,输出结果如下:
创建三维矩阵
three_dimensional_matrix = numpy.array([ # 三维
[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
], [
[10, 11, 12],
[13, 14, 15],
[16, 17, 18],
], [
[19, 20, 21],
[22, 23, 24],
[25, 26, 27]
]
])
传入一个三维的list,numpy.array自动将其转换成一维矩阵,输出结果如下:
同时,对于未知大小的矩阵,想要知道其维度,可使用shape来获取。如对于上述三个矩阵,可使用如下代码输出其对应维度:
print("一维矩阵大小: {}".format(vector.shape))
print("二维矩阵大小: {}".format(two_dimensional_matrix.shape))
print("三维矩阵大小: {}".format(three_dimensional_matrix.shape))
输出结果为:
利用切片操作取出数据
numpy的矩阵数据获取方式和python的list基本类似。可以直接通过[]来进行获取。如对于上面的二维矩阵:
[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
可使用如下操作获取对应数值(要记得程序猿数数都是从0开始数)
print("获取第一行第二个数据:{}".format(two_dimensional_matrix[1, 2]))
print("获取所有行第二列数据:{}".format(two_dimensional_matrix[:, 2]))
结果为:
数据判断
要判断numpy的矩阵中的值是否等于某个具体的数字或其他,可以直接使用判断符==进行判断。其会返回一个类似真值表的list.
如,首先我们创建一个二维矩阵:
matrix = numpy.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
然后再进行判断,保存并输出判断输出值:
re = matrix == 10
print(re)
输出结果为
与(&)非(|)判断
如何判断矩阵中的数据是否同时满足两个或多个值呢?这个时候我们就只需要使用我们熟悉的&和|来进行逻辑判断即可。
首先我们新建一个一维矩阵
vector = numpy.array([1, 2, 3, 4, 5, 6, 7])
然后进行&和|的判断。条件为“同时满足是2和3的数”及“满足是2或是3的数”
re_and = (vector == 2) & (vector == 3)
re_or = (vector == 2) | (vector == 3)
输出结果:
print("因为不存在同时等于2和3的数,故返回结果为{}".format(re_and))
print("因为存在等于2或者3的数,故返回结果为{}".format(re_or))
结果为:
强制类型转换
要将矩阵中的数据强制类型转换成需要的样子,只需使用astype()即可。
首先创建一个一维矩阵,其内部的数据类型为str
vector = numpy.array(['1', '2', '3', '4', '5', '6', '7'])
只需使用如下代码即可完成str到int的转换
vector = vector.astype(int)
极值
使用max和min获取极值
vector = numpy.array([1, 2, 3, 4, 5, 6, 7])
print("最大值为:{}".format(vector.max()))
print("最小值为:{}".format(vector.min()))
输出结果为:
注:min和max方法中还有一个非常重要的参数axis。其值的设定表示不同方向的最大和最小值。其中0表示列的最大值,1表示行的最大值。类似示例将在下面展示。
求和操作
使用sum进行求和。
如创建二维矩阵:
matrix = numpy.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
利用上文提到的axis不同方向的求和。
print("行相加:{}".format(matrix.sum(axis=1)))
print("列相加:{}".format(matrix.sum(axis=0)))
输出结果为:
代码获取传送门.