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)))

输出结果为:
在这里插入图片描述
代码获取传送门.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值