Python数据分析篇--NumPy--进阶
人有一种天生的、难以遏制的欲望,那就是在理解之前就评判。 -- 米兰·昆德拉
多维数组
1. 一维数组只有行,二维数组相比一维数组多了列这个维度,而三维数组则类似多个二维数组堆叠在一起,形如一个立方体。

二维数组的创建
1. 二维数组相当于单层的嵌套列表。并且我们可以将单层嵌套列表传入 np.array() 方法创建一个二维数组。
2. ones() 和 zeros() 方法同样也能快速创建元素全为 1 和 0 的二维数组。与之前的区别在于,创建二维数组要传入一个包含行和列信息的元组。
3. 更多维的数组的创建,只要传入嵌套层数更多的列表即可。
import numpy as nplist_1=[[1, 2], [3, 4]]
print(list_1)
# [[1, 2], [3, 4]]list_2=np.array([[1, 2], [3, 4]])
print(list_2)
# [[1 2]
# [3 4]]
import numpy as np
list_1=np.ones((3,4)) # 3行4列
print(list_1)#[[1. 1. 1. 1.]
# [1. 1. 1. 1.]
# [1. 1. 1. 1.]]
多维数组的性质
1. ndim:多维数组的维度个数。例如:二维数组的 ndim 为 2;
2. shape:多维数组的形状。对于 m 行和 n 列的数组,它的 shape 将是 (m,n)。因此,shape 元组的长度(元素个数)就是 ndim 的值;
3. size:多维数组中所有元素的个数。shape 元组中每个元素的乘积就是 size 的值;
4. dtype:多维数组中元素的类型。
data = np.array([[1, 2, 3], [4, 5, 6]])print('ndim:', data.ndim)
print('shape:', data.shape)
print('size:', data.size)
print('dtype:', data.dtype)# ndim: 2
# shape: (2, 3)
# size: 6
# dtype: int64
二维数组的加减乘除
1. 二维数组间的加减乘除和一维数组间的并无大致,也是对应位置的元素进行计算。
2. 维度一样的数组间可以进行计算的条件是形状(shape)一样,形状不一样的数组元素无法一一对应,因此无法计算,导致报错。
3. 广播原则:先补齐行轴,再往列轴方向进行复制。


二维数组的通用方法
1. 二维数组的通用方法和一维数组的通用方法的基本用法类似,只是多了一个维度的数据。
2. 二维数组不仅可以对所有数据进行计算,还可以针对某个维度上的数据进行计算。
3. 这里就要引入一个概念——轴(axis)。轴和维度的概念是类似的,一维数组有 1 个轴,二维数组有 2 个轴,三维数组有 3 个轴等等。

import numpy as np
data = np.array([[1, 2], [5, 3], [4, 6]])# 不指定 axis
print(data.max())
# 输出:6# axis=0
print(data.max(axis=0))
# 输出:[5 6]# axis=1
print(data.max(axis=1))
# 输出:[2 5 6]
二维数组的索引和分片
1. 二维数组的索引和分片同样和一维数组类似,只是在行索引的基础上再加上列索引。
2. 形如 data[m,n],其中 data 是二维数组,m 是行索引或分片,n 是列索引或分片。
3. 如果省略第二个参数 n 的话表示获取所有列,data[0] 就表示获取整个第一行,相当于 data[0, :]。
data = np.array([[1, 2], [3, 4], [5, 6]])print(data[0, 1])
# 2print(data[:, 0])
# [1 3 5]print(data[1:3])
# [[3 4]
# [5 6]]
布尔索引
1. 布尔索引,顾名思义就是用布尔值作为索引去获取需要的元素。
2. and 改用 &,or 改用 |,not 改用 ~,并且每个条件要用括号括起来。
data = np.array([[1, 2], [3, 4], [5, 6]])
print(data[data > 3])
# 输出:[4 5 6]# 大于 3 或者不小于 2(即大于等于 2)
print(data[(data > 3) | ~(data < 2)])
# 输出:[2 3 4 5 6]
实用方法
arange() 方法
1. numpy 中的 arange() 方法和 Python 中的 rang() 用法类似,不同之处在于 arange() 方法生成的是数组,而 rang() 方法生成的是 rang 类型的序列。
# 生成 1-9 的数组
print(np.arange(1, 10))
# 输出:[1 2 3 4 5 6 7 8 9]# 生成 0-9 的数组
print(np.arange(10))
# 输出:[0 1 2 3 4 5 6 7 8 9]# 生成 1-9 的数组,步长为 2
print(np.arange(1, 10, 2))
# 输出:[1 3 5 7 9]
随机方法
1. Python 中有 random 模块来生成随机数,numpy 针对多维数组也集成了 random 模块,并且更加方便好用。
2. 这里只介绍其中的 rand() 方法和 randint() 方法,更多方法大家可以在需要时查询使用。
3. numpy 中的 np.random.rand() 方法和 Python 中 random.rand() 方法类似,都是生成 [0,1) 之间的随机小数。
4. 不同的是,numpy 中的 np.random.rand() 方法可以生成多个 [0,1) 之间的随机小数,只需我们传入要生成的随机数组的形状(shape)即可。
5. 同理,numpy 中的 np.random.randint() 方法和 Python 中的 random.randint() 类似.
6. 不同之处在于,random.randint() 生成的是 [m,n] 之间的整数,而 np.random.randint() 生成的是 [m,n) 之间的整数。
# 不传参数时
print(np.random.rand())
# 输出:0.1392571183916036# 传入一个参数时
print(np.random.rand(3))
# 输出:[0.7987698 0.52115291 0.70452156]# 传入多个参数时
print(np.random.rand(2, 3))
# 输出:
# [[0.08539006 0.97878203 0.23976172]
# [0.34301963 0.48388704 0.63304024]]
# 不传入形状时
print(np.random.randint(0, 5))
# 输出:3# 形状为一维数组时
print(np.random.randint(0, 5, 3))
# 输出:[4 0 1]# 形状为二维数组时
print(np.random.randint(0, 5, (2, 3)))
# 输出:
# [[0 2 1]
# [4 2 0]]
genfromtxt() 方法
1. genfromtxt() 方法用于文件的读取。
2. genfromtxt() 方法常用的参数有两个,分别是数据源和分隔符。
3. 第一个参数是数据源,可以是本地文件的路径,也可以是网络文件的地址。
4. 第二个delimiter 参数用于指定分隔符,CSV 文件一般是用逗号作为分隔符,当遇到其他符号分隔的文件时,用 delimiter 参数进行指定即可。
5. genfromtxt() 方法的返回值是一个多维数组。
import numpy as np
data=np.genfromtxt('data.csv',delimiter=',')
print(data)
致谢
感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!
相关文章:
Python数据分析篇--NumPy--进阶
人有一种天生的、难以遏制的欲望,那就是在理解之前就评判。 -- 米兰昆德拉 多维数组 1. 一维数组只有行,二维数组相比一维数组多了列这个维度,而三维数组则类似多个二维数组堆叠在一起,形如一个立方体。 二维数组的创建 1. 二…...
基于Arduino的宠物食物分配器
创作本文的初衷是本人的一个养宠物的梦想(因为家里人对宠物过敏,因此养宠物的action一直没有落实),但是梦想总是要有的哈哈哈哈哈。上周正好是和一个很好的朋友见面,聊到了养宠物的事情,她大概是讲到了喂宠…...
make和Makefile
make是一个命令工具,用于读取并执行名为Makefile(makefile)的文件中定义的规则。 Makefile是一个文本文件,它告诉make哪些文件依赖于其他文件,以及如何从这些依赖项生成最终的目标文件。 我们先简单看一下使用make的…...
【数学分析笔记】第4章第4节 复合函数求导法则及其应用(2)
4. 微分 4.4 复合函数求导法则及其应用 【例4.4.3】 y e 1 cos x ye^{\sqrt{1\cos x}} ye1cosx ,求 y ′ y y′ 【解】 y ′ e 1 cos x ⋅ 1 2 1 cos x ⋅ ( − sin x ) − sin x 2 1 cos x e 1 cos x ye^{\sqrt{1\cos x}}\cdot\f…...
【预备理论知识——2】深度学习:线性代数概述
简单地说,机器学习就是做出预测。 线性代数 线性代数是数学的一个分支,主要研究向量空间、线性方程组、矩阵理论、线性变换、特征值和特征向量、内积空间等概念。它是现代数学的基础之一,并且在物理学、工程学、计算机科学、经济学等领域有着…...
【目标检测】yolo的三种数据集格式
目标检测中数据集格式之间的相互转换--coco、voc、yolohttps://zhuanlan.zhihu.com/p/461488682?utm_mediumsocial&utm_psn1825483604463071232&utm_sourcewechat_session【目标检测】yolo的三种数据集格式https://zhuanlan.zhihu.com/p/525950939?utm_mediumsocial&…...
数据分析案例-机器学习工程师薪资数据可视化分析
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
Django连接Dify、ChatGPT4o并计算tokens数量方法
通过Dify可以连接很多模型国内、国外的都可以进行选择可以到Dify里创建一个空白应用,然后点击进入就可以看到API了api_url "http://192.168.15.131/v1/chat-messages" api_key "app-UtzTpVNwpTLUcGvRNnnK9QNY" headers {"Authorization…...
面试系列-淘天提前批面试
00-淘天提前批面试 在牛客上看到了淘天提前批的面试题目,这里分析一下淘天面试的问了有哪些内容,面试的重点 是偏向哪些方面 项目相关 1、秒杀架构如何设计? 问了秒杀的架构如何设计,对于秒杀的设计,秒杀符合 写多读少…...
计算机中科学中有哪些空间换时间的操作??
计算机中科学中有哪些空间换时间的操作?? 1. SPOOLing (Simultaneous Peripheral Operations On-Line) 原理:SPOOLing 是一种将输入/输出操作缓存到磁盘或内存中的技术,从而在后台处理它们。这可以防止 CPU 等待慢速的外部设备&…...
Mac安装Manim并运行
1.在macOS上创建Python虚拟环境,可以使用venv模块,这是Python自带的库,也可以使用conda。以下是使用venv创建和使用Python虚拟环境的步骤: 打开终端。 创建一个新的目录来存放你的项目,并进入该目录: mk…...
leetcode58:最后一个单词的长度
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大 子字符串 。 示例 1: 输入:s "Hello World" 输出ÿ…...
18448 最小生成树
### 思路 使用Kruskal算法求解图的最小生成树。Kruskal算法通过对所有边按权值排序,然后逐步选择最小权值的边,确保不会形成环,直到构建出最小生成树。 ### 伪代码 1. 读取输入的结点数n和边数m。 2. 读取每条边的信息,存储在边列…...
前端工程化 - Vue
环境准备 Vue-cli是Vue官方提供的一个脚手架,用户快速生成一个Vue的项目模板。 Vue-cli提供了如下功能: 统一的目录结构本地调试热部署单元测试集成打包上线 需要安装Node.js 安装Vue-cli npm install -g vue/cli通过vue --version指令查看是否安装成…...
使用 NVIDIA H100 上的 Azure 机密计算释放隐私保护 AI 的潜力
通过 NVIDIA H100 上的 Azure 机密计算释放隐私保护 AI 的潜力 文章目录 前言一、机密计算二、使用 NVIDIA H100 Tensor Core GPU 的 Azure 机密计算1. 安全功能2. 可扩展性和可编程性三、场景1. 模型机密性2. 推理/提示机密性3. 使用私有数据进行微调4. 多方培训结论前言 这是…...
目标检测与图像分类:有什么区别?各自的使用场景是什么?
《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…...
Lua 数据类型
Lua 数据类型 Lua 是一种轻量级的编程语言,因其简单性和灵活性而广受欢迎。在 Lua 中,数据类型是编程的基础,它们决定了变量能够存储哪种类型的数据。Lua 的数据类型可以分为以下几个类别: 1. nil nil 是 Lua 中的一个特殊类型…...
复现文章:R语言复现文章画图
文章目录 介绍数据和代码图1图2图6附图2附图3附图4附图5附图6 介绍 文章提供画图代码和数据,本文记录 数据和代码 数据可从以下链接下载(画图所需要的所有数据): 百度云盘链接: https://pan.baidu.com/s/1peU1f8_TG2kUKXftkpYq…...
东方仙盟——软件终端架构思维———未来之窗行业应用跨平台架构
一、创生.前世今生 在当今的数字化时代,我们的服务覆盖全球,拥有数亿客户。然而,这庞大的用户规模也带来了巨大的挑战。安全问题至关重要,任何一处的漏洞都可能引发严重的数据泄露危机。网络带宽时刻面临考验,稍有不足…...
支持向量机(SVM)基础教程
一、引言 支持向量机(Support Vector Machine,简称SVM)是一种高效的监督学习算法,广泛应用 于分类和回归分析。SVM以其强大的泛化能力、简洁的数学形式和优秀的分类效果而备受机器学 习领域的青睐。 二、SVM基本原理 2.1 最大间…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
