人工智能研究生前置知识—科学计算库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
人工智能研究生前置知识—科学计算库numpy numpy是python中做科学计算的基础库,对数组进行操作 整个numpy的操作和使用比较简单因此可以通过案例的学习掌握基本的用法在之后的学习中不断的进行熟悉和补充 创建数组(矩阵 ) 创建的ndarray数组…...
element UI 设置type=“textarea“ 禁止输入框缩放
背景 在 Element UI 中,当您使用 el-input 组件并设置 type"textarea" 时,默认情况下,用户可以通过拖动输入框的右下角来调整其大小。如果您想禁止这种缩放行为,需要使用 CSS 来覆盖默认的浏览器行为。 注意上图&#x…...
Rust腐蚀服务器常用参数设定详解
Rust腐蚀服务器常用参数设定详解 大家好我是艾西,一个做服务器租用的网络架构师上期我们分享了rust腐蚀服务器的windows系统搭建方式,其中启动服务器bat参数因为涉及的东西比较多所以想通过这篇文章给大家做一下详细的分享。 (注本文中xxxx…...
无人机巡检技术革命性变革光伏电站运维管理
在中国广袤的大地上,光伏电站如雨后春笋般崛起,晶体硅组件板在阳光下熠熠生辉,为人们带来了源源不断的绿色能源。然而,随着光伏产业的迅猛发展,电站运维管理面临着前所未有的挑战。而无人机巡检技术的引入,…...
【学习】软件信创测试中,如何做好兼容性适配
在软件信创测试的领域中,兼容性适配是至关重要的一环。如何确保软件在不同的操作系统、硬件设备和软件环境中稳定运行,是每个测试人员需要面对的挑战。本文将从几个方面探讨如何做好兼容性适配,以提高软件的稳定性和用户体验。 首先…...
阿里云ACK k8s集群迁移
1、创建k8s集群 阿里云ACK创建 2、创建所需的第三方插件 ACK ingress创建 3、导出原有ACK集群配置 包含deployment、service、ingress、PersistentVolumeClaim 执行命令 kubectl get deployment,service,secret,ingress,PersistentVolumeClaim -n <namespace_name> -o y…...
1.3 字符设备驱动
1、字符设备驱动工作原理 2、file_operations结构体 struct file_operations { struct module *owner; //拥有该结构的模块的指针,一般为THIS_MODULES loff_t (*llseek) (struct file *, lof…...
计算机毕业设计springboot小区物业报修管理系统m8x57
该物业报修管理系统实施的目的在于帮助物业管理企业升级员工管理、住户管理、报修问题管理等内部管理平台,整合物业管理企业物力和人力,全面服务于维修人员管理的内部管理需求,并重视需求驱动、管理创新、与业主交流等外部需求,通过物业管理企业各项资源…...
深度学习体系结构——CNN, RNN, GAN, Transformers, Encoder-Decoder Architectures算法原理与应用
1. 卷积神经网络 卷积神经网络(CNN)是一种特别适用于处理具有网格结构的数据,如图像和视频的人工神经网络。可以将其视作一个由多层过滤器构成的系统,这些过滤器能够处理图像并从中提取出有助于进行预测的有意义特征。 设想你手…...
js 数字的常用方法梳理
toFixed:保留几位小数。toFixed(保留小数位)。注意:不做任何的四舍五入。 Math集合: random:获取一个0-1之间的随机数。注意,包含0,不包含1。 round:四舍五入取整数,最后返回一个整数值。 ceil:向上取整。 floor:…...
STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978(5)
接前一篇文章:STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978(4) 本文参考以下文章及视频: STM32CbueIDE Audio播放音频 WM8978 I2S_stm32 cube配置i2s录音和播放-CSDN博客 STM32第二十二课(I2S,HAL&am…...
Objective-C学习笔记(block,协议)4.10
1.block:是一个数据类型,存储一段代码,代码可以有参数有返回值。 2.声明block: 返回值类型 (^block变量名称)(参数列表); int (^myblock) (int num1,int num2); 代码段格式:^返回值类型(参数列表){ 代码段 }; int (^m…...
AD7982BRMZRL7 二进制 500kSPS 模数转换芯片 ADI
AD7982BRMZRL7是一款由Analog Devices(亚德诺)公司生产的18位逐次逼近型模数转换器(ADC)。它主要用于将模拟信号转换为数字信号,适用于数据采集系统、嵌入式系统、工业控制和医疗设备等领域。 AD7982BRMZRL7的主要功能…...
采集某新闻网资讯网站保存PDF
网址:融资总额近3亿美元、药明康德押注,这家抗衰老明星公司有何过人之处-36氪 想要抓取文章内容,但是找不到啊,可能是文字格式的问题,也可能文章内容进行了加密。 在元素中查看,window.initialState返回的就…...
03攻防世界-unserialize3
根据题目可以看出,这是个反序列化的题目 打开网址观察题目可以看到这里是php的代码,那么也就是php的反序列化 本题需要利用反序列化字符串来进行解题,根据源码提示我们需要构造code。 序列化的意思是:是将变量转换为可保存或传输…...
蓝桥杯备考随手记: 常见的二维数组问题
在Java中,二维数组是一种可以存储多个元素的数据结构。它由多个一维数组组成,这些一维数组可以看作是行和列的组合,形成了一个矩阵。 1. 二维数组旋转问题 二维数组的旋转是指将数组中的元素按照一定规则进行旋转。通常有两种常见的旋转方式…...
Java | Leetcode Java题解之第28题找出字符串中第一个匹配项的下标
题目: 题解: class Solution {public int strStr(String haystack, String needle) {int n haystack.length(), m needle.length();if (m 0) {return 0;}int[] pi new int[m];for (int i 1, j 0; i < m; i) {while (j > 0 && needl…...
【数据结构与算法】:二叉树经典OJ
目录 1. 二叉树的前序遍历 (中,后序类似)2. 二叉树的最大深度3. 平衡二叉树4. 二叉树遍历 1. 二叉树的前序遍历 (中,后序类似) 这道题的意思是对二叉树进行前序遍历,把每个结点的值都存入一个数组中,并且返回这个数组。 思路&…...
uniapp——长按识别二维码
说明 转变思路,长按图片,进入预览图片,这时候再长按就可以了。 <view class"codeMain"><view class"codeWhite" longpress"handleLongPress(i.image(qrcode))"><image :src"i.image(qrc…...
云服务器环境web环境搭建之JDK、redis、mysql
一、Linux安装jdk,手动配置环境 链接: https://pan.baidu.com/s/1LRgRC5ih7B9fkc588uEQ1whttps://pan.baidu.com/s/1LRgRC5ih7B9fkc588uEQ1w 提取码: 0413 tar -xvf 压缩包名 修改配置文件/etc/profile 二、安装redis环境 方案一: Linux下安装配置r…...
第1章 计算机网络体系结构
王道学习 【考纲内容】 (一)计算机网络概述 计算机网络的概念、组成与功能;计算机网络的分类; 计算机网络的性能指标 (二)计算机网络体系结构与参考模型 计算机网络分层结…...
Docker之自定义镜像上传至阿里云
一、Alpine介绍 Alpine Linux是一个轻量级的Linux发行版,专注于安全、简单和高效。它采用了一个小巧的内核和基于musl libc的C库,使得它具有出色的性能和资源利用率。 Alpine Linux的主要特点包括: 小巧轻量:Alpine Linux的安装…...
《深入Linux内核架构》第2章 进程管理和调度 (2)
目录 2.4 进程管理相关的系统调用 2.4.1 进程复制 2.4.2 内核线程 2.4.3 启动新程序 2.4.4 退出进程 本专栏文章将有70篇左右,欢迎关注,订阅后续文章。 2.4 进程管理相关的系统调用 2.4.1 进程复制 1. _do_fork函数 fork vfork clone都最终调用_…...
(四)PostgreSQL的psql命令
PostgreSQL的psql命令 基础信息 OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本:16.2 pg软件目录:/home/pg16/soft pg数据目录:/home/pg16/data 端口:5777psql 是 PostgreSQL 数据库的命令行界面…...
前端使用minio传输文件
minio官方文档 minio-js可以支持ts。 安装完可能会出现 Can‘t import the named export ‘xxx‘ from non EcmaScript module (only default export is available)可以尝试降低minio的版本 npm install minio7.0.18 --save代码: 初始化 const Minio require(…...
[大模型] BlueLM-7B-Chat WebDemo 部署
BlueLM-7B-Chat WebDemo 部署 模型介绍 BlueLM-7B 是由 vivo AI 全球研究院自主研发的大规模预训练语言模型,参数规模为 70 亿。BlueLM-7B 在 C-Eval 和 CMMLU 上均取得领先结果,对比同尺寸开源模型中具有较强的竞争力(截止11月1号)。本次发布共包含 7…...
一文了解ERC404协议
一、ERC404基础讲解 1、什么是ERC404协议 ERC404协议是一种实验性的、混合的ERC20/ERC721实现的,具有原生流动性和碎片化的协议。即该协议可让NFT像代币一样进行拆分交易。是一个图币的互换协议。具有原生流动性和碎片化的协议。 这意味着通过 ERC404 协议…...
iOS cocoapods pod FrozenError and RuntimeError
0x00 报错日志 /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.12.0/lib/cocoapods/user_interface/error_report.rb:34:in force_encoding: cant modify frozen String (FrozenError)from /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.12.0/lib/cocoapods/user_interface/error_r…...
【鸿蒙开发】第二十章 Camera相机服务
1 简介 开发者通过调用Camera Kit(相机服务)提供的接口可以开发相机应用,应用通过访问和操作相机硬件,实现基础操作,如预览、拍照和录像;还可以通过接口组合完成更多操作,如控制闪光灯和曝光时间、对焦或调焦等。 2 …...
JS阅读笔记
myweb3.html <video id"video" width"400" height"300" autoplay></video> <button id"capture-btn">拍摄图片</button> <canvas id"canvas" width"400" height"300">&…...
做企业网站好的/seo推广有哪些公司
有时我们需要在html元素的title中换行显示信息。以下几种方法均可以实现: 直接在titile属性中使用换行,如下所示: 1 <a href"asd"title"asdsad2 asdsad3 asd">asdsadsad</a>在title属性中使用AscII码&…...
wordpress浏览图片失败/百度竞价怎么做效果好
前面一篇文章[Flutter实战1 写一个天气查询的APP]实现了一个显示城市、温度、天气、湿度的界面,但是这个界面只有一个显示的功能,没有任何可交互的地方,本篇文章继续完善查询天气的APP的功能。 先上效果图; 增加两个功能ÿ…...
html5官方网站开发流程/引流推广公司
记得自己最初的梦想就是想投入到web前端的开发中来,正如我博客名字“准前端工程师”,曾经也幻想着能在web领域闯出一片自己的新天地,现在回过头来看看曾经的我,确实是活的如此迷茫以及随波逐流,同时也感谢我的第一份实…...
网站是怎么做排名的/做网页设计一个月能挣多少
<?php include_once smarty.php; $smarty->assign(title,标题); $smarty->assign(content,内容);$output $smarty->fetch(index.html); echo $output;// $smarty->display(index.html); ?>#使用fetch函数,你可以将要输出的html赋值给一个变量&…...
福州中小企业网站制作/百度云资源搜索网站
pd4ml用来把html生成pdf的实例--需要pd4ml的jar包 http://blog.csdn.net/cgwcgw_/article/details/18092601 Poi-Pdf之生成带目录的pdf实例 http://blog.csdn.net/cgwcgw_/article/details/17557179 官方 http://www.pd4ml.com/cookbook/ PD4ML Cookbook Explore PD4ML fea…...
网站建设丿金手指稳定/seo网页优化平台
MCCS 是什么? MCCS 是什么? …… 如果你没在任何地方听说过这个词,那就对了。因为这个词是本文作者,也就是颐和园创造出来的。 MCCS 是作者创造的一种新的 iOS APP 构建方式和设计模式。它是对 MVC 模式的扩展。其目的是为了解决…...