人工智能研究生前置知识—科学计算库numpy

2024-04-14 14:12

本文主要是介绍人工智能研究生前置知识—科学计算库numpy,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

人工智能研究生前置知识—科学计算库numpy

numpy是python中做科学计算的基础库,对数组进行操作
整个numpy的操作和使用比较简单因此可以通过案例的学习掌握基本的用法在之后的学习中不断的进行熟悉和补充

创建数组(矩阵 )

创建的ndarray数组与python中的列表有格式上的相似之处。所有创建的数据类型都是ndarray类型

import numpy as npt1 = np.array([1,2,3])
print(t1)
print(type(t1))

运行结果

[1 2 3]
<class ‘numpy.ndarray’>

创建顺序数组的方式二

#创建方式二:生成顺序数组
t2 = np.array(range(6))
#等价形式
t3 = np.arange(6)print(t2)
print(t3)

运行结果

[0 1 2 3 4 5]
[0 1 2 3 4 5]

创建方式三:设置起始位置与步长的创建方式

t4 = np.arange(4,10,2)
print(t4)
[4 6 8]

补充:查看当前数组中存放的数据类型可以使用.dtype的类型来进行获取和实现。对于数据类型可以参考numpy中常见的数据类型。

print(t4.dtype)
t5 = np.array(['aaa',12,5.2])
print(t5)
print(t5.dtype)

运行结果:
int32
[‘aaa’ ‘12’ ‘5.2’]
<U32

创建方式四:上面了解了numpy中存储数据常见的数据类型,由此可以引出第四种创建方式。在创建时引入指定的数据类型

t6 = np.arange(4,dtype=float)
print(t6)
print(t6.dtype)[0. 1. 2. 3.]
float64

补充调整数据类型的操作

#调整数据类型的操作
t7 = t6.astype("int8")
print(t7)
[0 1 2 3]

创建方式五:通过列表生成式随机生成十个小数

#列表生成式
t8 = np.array([random.random() for i in range(10)])
print(t8)
print(t8.dtype)[0.29322004 0.66179523 0.49565288 0.91203122 0.36098369 0.390472660.67372706 0.28380916 0.08134317 0.96597784]
float64

补充:numpy中的去指定位数的小数的操作步骤(固定小数的位数)

t9 = np.round(t8,2)
print(t9)
[0.95 0.03 0.31 0.06 0.18 0.19 0.47 0.71 0.28 0.11]

数组的形状

查看数组的形状可以使用shape来调用,而修改数组的形状可以通过reshape来进行调用

创建一个二维数组每个数组中含有6个元素的数据

import numpy as npa = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
print(a)
print(a.shape)# 修改数组的形状并进行输出
print(a.reshape(3,4))
print(a.shape)
print(a)

[[3 4 5 6 7 8]
[4 5 6 7 8 9]]
(2, 6)
[[3 4 5 6]
[7 8 4 5]
[6 7 8 9]]
(2, 6)
[[3 4 5 6 7 8]
[4 5 6 7 8 9]]

问题思考:为什么a还是2行6列的数组格式呢?:原因reshape函数的操作是原地操作只对数组本身进行修改而没有返回值存在

对于shape的输出是一个元祖,二维数据中含有两个数值,三维数组中含有三个数值来进行表示以此类推。(通常将高维数组降为低维数组进行计算)

t5 = np.arange(24).reshape(2,3,4)
print(t5)[[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]][[12 13 14 15][16 17 18 19][20 21 22 23]]]
# 降维操作
t6 = t5.reshape(4,6)
print(t6)t7 = t5.reshape(24,)
print(t7)[[ 0  1  2  3  4  5][ 6  7  8  9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]]
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]

将高维数组降为低维数组可以使用numpy中内置的方法flatten将其展平为一维数组

# 一维数组展平
t8 = t7.flatten()
print(t8)

数组的计算

数组和数值进行计算

计算规则:数组中的每一个元素都加上该数值来进行计算(应用到数组中的每一个数字)也称为广播机制,同时可以应用减法,乘法,除法等相关运算

print(t6)
print(t6+2)[[ 0  1  2  3  4  5][ 6  7  8  9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]]
[[ 2  3  4  5  6  7][ 8  9 10 11 12 13][14 15 16 17 18 19][20 21 22 23 24 25]]

补充特殊的运算方式除0进行运算

[[nan inf inf inf inf inf]
[inf inf inf inf inf inf]
[inf inf inf inf inf inf]
[inf inf inf inf inf inf]] inf:无穷 nan:不是数值

同维数数组进行计算

计算规则:满足矩阵之间的运算规则:相同对应位置的元素之间进行相加的运算操作(同理加法乘法除法相同)。

b1 = np.arange(100,124).reshape(4,6)
print(t6)
print(b1)
print(b1+t6)[[ 0  1  2  3  4  5][ 6  7  8  9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]]
[[100 101 102 103 104 105][106 107 108 109 110 111][112 113 114 115 116 117][118 119 120 121 122 123]]
[[100 102 104 106 108 110][112 114 116 118 120 122][124 126 128 130 132 134][136 138 140 142 144 146]]

不同维数的数组之间进行计算

使用二维数组与一维数组进行计算:采用的计算规则是高维数组中的每个低维元素与低维数组进行运算举例说明

print(t6)
b2 = np.arange(0,6)
print(b2)
print(t6-b2)
# 类似于取反的操作
print(b2-t6)[[ 0  1  2  3  4  5][ 6  7  8  9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]]
[0 1 2 3 4 5]
[[ 0  0  0  0  0  0][ 6  6  6  6  6  6][12 12 12 12 12 12][18 18 18 18 18 18]]
[[  0   0   0   0   0   0][ -6  -6  -6  -6  -6  -6][-12 -12 -12 -12 -12 -12][-18 -18 -18 -18 -18 -18]]

在判断满足计算条件时至少需要有一个维度满足相同的条件,否则会报错,在之后的练习使用中可以尝试3维数组与2维数组的计算等

numpy读取本地数据

轴的概念

在numpy中轴可以理解为方向,使用数字0,1,2来进行表示,对于一维数组只有一个0轴,对于2维数组(shape(2,2))有0轴和1轴,同理对于三维数组(shape(2,2,3))有0轴1轴2轴

有了轴的概念之后,计算一个二维数组的平均值必须指定在那一个方向

读取csv数据简单了解

numpy索引

  • 去numpy中的指定位置的元素(1维,2维)

一维数组的索引和切片操作

#numpy的索引与切片操作
import numpy as np
a = np.arange(3,15)
print(a)
print(a[4])
print(a[:])[ 3  4  5  6  7  8  9 10 11 12 13 14]
7
[ 3  4  5  6  7  8  9 10 11 12 13 14]

二维数组的索引和切片操作

b= np.arange(1,13).reshape(3,4)
print(b)
# 情况一选中一行元素
print(b[1])
# 等价形式
print(b[1,:])
#情况二选中一个元素
print(b[1][2])
# 等价形式
print(b[1,2])
# 选中一列元素
print(b[:,1])[[ 1  2  3  4][ 5  6  7  8][ 9 10 11 12]]
[5 6 7 8]
[5 6 7 8]
7
7
[ 2  6 10]
[5 6 7 8]

数组的转置与迭代

# 矩阵或数组的转置
print(b.T)
# 遍历与迭代(按列进行迭代)
for col in b.T:print(col)
#按行进行迭代
for rol in b:print(rol)
结果:
[[ 1  5  9][ 2  6 10][ 3  7 11][ 4  8 12]]
[1 5 9]
[ 2  6 10]
[ 3  7 11]
[ 4  8 12]
[1 2 3 4]
[5 6 7 8]
[ 9 10 11 12]

numpy的数组合并

  • 一维数组的垂直合并(vertical stack)
# array数组的合并
import numpy as np
a = np.array([1,1,1])
b= np.array([2,2,2])
print(np.vstack((a,b)))
# 测试合并之后变为二维数组
print(np.vstack((a,b)).shape)[[1 1 1][2 2 2]]
(2, 3)

要确保满足格式的条件下进行合并操作

  • 一维数组的水平合并(左右合并 horizontal stack)
print(np.hstack((a,b)))
print(np.hstack((a,b)).shape)[1 1 1 2 2 2]
(6,)
  • 向量的转置操作
# 向量进行转置可以在转置之后进行合并
print('===========')
c = a[:,np.newaxis]
print(c)
print(c.shape)
d = a[np.newaxis,:]
print(d)
print(d.shape)===========
[[1][1][1]]
(3, 1)
[[1 1 1]]
(1, 3)
(3,)

numpy数组的分割

若进行横向分割axis = 0 进行纵向分割是axis = 1

等量分割

import numpy as np
a = np.arange(12).reshape((3,4))
print(a)
print(np.split(a,3,axis=0))
print(np.split(a,4,axis=1))[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
[array([[0],[4],[8]]), array([[1],[5],[9]]), array([[ 2],[ 6],[10]]), array([[ 3],[ 7],[11]])]

不等量分割

print(np.array_split(a,3,axis=1))
print(np.array_split(a,6,axis=0))

不等量分割的结果

[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]]), array([], shape=(0, 4), dtype=int32), array([], shape=(0, 4), dtype=int32), array([], shape=(0, 4), dtype=int32)]

对应的简单等价形式

# 等价分割的形式
print('==============')
print(np.vsplit(a,3))
print(np.hsplit(a,4))
print(np.hsplit(a,2))==============
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
[array([[0],[4],[8]]), array([[1],[5],[9]]), array([[ 2],[ 6],[10]]), array([[ 3],[ 7],[11]])]
[array([[0, 1],[4, 5],[8, 9]]), array([[ 2,  3],[ 6,  7],[10, 11]])]

这篇关于人工智能研究生前置知识—科学计算库numpy的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/903200

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

基于人工智能的智能家居语音控制系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 随着物联网(IoT)和人工智能技术的发展,智能家居语音控制系统已经成为现代家庭的一部分。通过语音控制设备,用户可以轻松实现对灯光、空调、门锁等家电的控制,提升生活的便捷性和舒适性。本文将介绍如何构建一个基于人工智能的智能家居语音控制系统,包括环境准备

从希腊神话到好莱坞大片,人工智能的七大历史时期值得铭记

本文选自historyextra,机器之心编译出品,参与成员:Angulia、小樱、柒柒、孟婷 你可能听过「技术奇点」,即本世纪某个阶段将出现超级智能,那时,技术将会以人类难以想象的速度飞速发展。同样,黑洞也是一个奇点,在其上任何物理定律都不适用;因此,技术奇点也是超越未来理解范围的一点。 然而,在我们到达那个奇点之前(假设我们能到达),还存在另一个极大的不连续问题,我将它称之

【Python知识宝库】上下文管理器与with语句:资源管理的优雅方式

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、什么是上下文管理器?二、上下文管理器的实现三、使用内置上下文管理器四、使用`contextlib`模块五、总结 前言 在Python编程中,资源管理是一个重要的主题,尤其是在处理文件、网络连接和数据库

dr 航迹推算 知识介绍

DR(Dead Reckoning)航迹推算是一种在航海、航空、车辆导航等领域中广泛使用的技术,用于估算物体的位置。DR航迹推算主要通过已知的初始位置和运动参数(如速度、方向)来预测物体的当前位置。以下是 DR 航迹推算的详细知识介绍: 1. 基本概念 Dead Reckoning(DR): 定义:通过利用已知的当前位置、速度、方向和时间间隔,计算物体在下一时刻的位置。应用:用于导航和定位,

[Day 73] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

AI在健康管理中的應用實例 1. 引言 隨著健康管理需求的提升,人工智能(AI)在該領域的應用越來越普遍。AI可以幫助醫療機構提升效率、精準診斷疾病、個性化治療方案,以及進行健康數據分析,從而改善病患的健康狀況。這篇文章將探討AI如何應用於健康管理,並通過具體代碼示例說明其技術實現。 2. AI在健康管理中的主要應用場景 個性化健康建議:通過分析用戶的健康數據,如飲食、運動、睡眠等,AI可

Python知识点:如何使用Anaconda进行科学计算环境管理

使用 Anaconda 进行科学计算环境管理是一个非常强大且灵活的方式,特别适合处理 Python 和 R 语言的包管理和虚拟环境管理。Anaconda 集成了许多用于科学计算和数据分析的库,并提供了环境隔离的功能,确保不同项目之间不会发生包冲突。以下是使用 Anaconda 进行科学计算环境管理的详细步骤: 1. 安装 Anaconda 首先,你需要在本地机器上安装 Anaconda。你可以