Python数据分析之numpy的使用

作者将自己学习numpy的代码+笔记分享一下,想学哪一部分就把哪一部分的注释去掉即可,便于初学者学习和复习:

import numpy as np'''主要是根据数据构建算法可能用到的矩阵,对于矩阵可以进行相应的处理变换'''#将一个列表输出成一维向量,列表的列表输出为矩阵
# The numpy.array() 可以将一个列表输出成一维向量 列表的列表输出为矩阵(即上面说的ndarray)
vector = np.array([5, 10, 15, 20])  # 一维向量(当然也是矩阵)
# 矩阵,矩阵中的列表值必须为相同类型,只要有字符,就全变为字符,如果有True,就定义为1
matrix = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45],[33,22,33]])
# print(vector)
# print(matrix)
# #
# print(vector.shape)  #(4,)
# # .shape输出矩阵维度
# print(matrix.shape)#(4, 3)表示四行三列# print(matrix[:,1])#取所有行的第2列
#
# vec_equal_to_ten=(vector==10)
#
# #找到矩阵中有没有值等于一个数,返回的是含有布尔值的列表
# print(vec_equal_to_ten)
#
# #输入有10的那一行,在一维向量中,每一个数都是行
# #这个可以检查所有数中有没有该值,没有的话就返回[],比True和False快速
# print(vector[vec_equal_to_ten])
#
# #检查矩阵中所有行的第二列是否有等于25的,如果有就返回该行
# matrix_second_col_25=matrix[:,1]==25
#
# print(matrix[matrix_second_col_25])
## #与或表达式
# vec_equal_to_ten_or_five=(vector==10)|(vector==5)
# print(vector[vec_equal_to_ten_or_five])# #改变所有值的操作,不改变原来矩阵的类型
# vec=vector.astype(str)#把矩阵中所有元素变成字符串,但是不改变矩阵结构
# print(vec)
# print(vector)# #生成0~14组成的向量
# m=np.arange(15)
# print(m)
# print(m.reshape(3,5))#一共15个向量,将向量变成3*5的矩阵
#
# # #形状,元素个数,数据类型名称,维度:一般都是二维矩阵
# print(m.shape,m.size,m.dtype.name,m.ndim)# # 注意zeros()中需是一个元祖
# print(np.zeros((3, 4)))  # 默认float类型
# # 三维矩阵(每个元素都是整数1),两?三行四列,高维不知道怎么说
# print(np.ones((2, 3, 4), dtype=np.int32))
#
# print(np.arange(10, 30, 5))  # 10开始<30结束,每5个取一个值
#
'''默认从0到1产生随机数,产生二行三列的数组'''
# print(np.random.random((2,3)))
##返回一组具有标准正态分布的样本
# print(np.random.randn(2,4))# #这个pi必须要说明是从numpy引入的,否则当作变量处理
# from numpy import pi
# # 起始0到2*pi平均取100个值
# print(np.linspace(0, 2 * pi, 10))#是平均取值# a = np.array([20,30,40,50])
# b = np.arange(4)
# # b**2表示矩阵所有元素平方
# print(b**2)
# # a<35表示对矩阵所有元素判断,每个元素都返回布尔值
# print(a<35)
#
# '''A*B表示AB矩阵的元素本身相乘
# 而A.dot(B)/np.dot(A,B)是AB两个矩阵做矩阵乘法运算'''
# print(b)
# # 求指数幂
# print(np.exp(b))
# # 开方
# print(np.sqrt(b))# a = np.floor(10*np.random.random((3,4)))# floor函数表示向下取整
# print(a)
# print("--------------------------------")
# # ravel函数把矩阵拉成一个向量
# print(a.ravel())
# print("--------------------------------")
# #注意a.shape()是永久改变数组结构,而reshape函数不改变
# a.shape = (6,2)
# # a.reshape(3,-1) 当行或列确定后,另一个可以置为-1,它自己会算出正确结果
# print(a)
# print("--------------------------------")
# # 转置
# print(a.T)# a = np.floor(10 * np.random.random((2, 2)))
# b = np.floor(10 * np.random.random((2, 2)))
# print(a)
# print("--------------------")
# print(b)
# print("--------------------")
# # 横着拼接
# print(np.hstack((a, b)))
# print("--------------------")
# # 纵着拼接
# print(np.vstack((a, b)))'''np.hsplit(a,(3,4)) 是一个 numpy 函数,它用于沿着水平轴(列)将数组 a 分割成多个子数组。在这种情况下,它将在第3列和第4列之后分割数组 a。
这意味着,它将返回三个子数组:第一个包含前三列,第二个包含第四列,第三个包含剩余的列1。'''
# a = np.floor(10*np.random.random((2,12)))
# print(a)
# print("--------------")
# # 按行切分 ,切成3份
# print(np.hsplit(a,3))
# print("--------------")
# # 指定位置切分
# print(np.hsplit(a,(3,4)))
# b = a.T
# print(b)
# print("--------------")
# # 按列切:vsplit是横着切,hsplit是竖着切
# c=np.vsplit(b,3)
# print(c)'''a=b地址赋值,深复制
a=b.view()只是指向不同,但是值居然是共用的
a=b.copy()指向不一样,值也不一样,推荐使用这个copy()'''
# a = np.arange(12)
# # a和b指向同一个东西(只是名字不同)
# b = a
# print(b is a)
# print(b.shape)
# print(a.shape)
# print(id(a))# 对应内存上唯一的一个区域
# print(id(b))'''提取每列最大最小值,其实也可以提取每行的最大最小值'''
# # 这些元素是从0到19的整数的正弦值,其实就是对于矩阵的运算,几乎都是对矩阵元素进行的变换
# # 所以就是将这个矩阵中的元素求sin值
# data = np.sin(np.arange(20).reshape(5,4))
# print(data)
# # 使用 argmax 函数沿着第0轴(即行)找到每一列的最大值的位置(即索引)。这些索引存储在名为 ind 的数组中。
# ind = data.argmax(axis=0)
# print(ind) #该位置索引从0开始
# # 通过ind 取出每列对应的最大值,data.shape在本例中是(5,4),所以data.shape[1]就是4
# data_max = data[ind, range(data.shape[1])]
# print(data_max)
# # 既然0轴是挑选每一列的最大值,那么1轴我猜就是挑选每一行的最大值,甚至我猜有argmin函数
# inr = data.argmax(axis=1)
# print(inr)
# data_max1 = data[range(data.shape[0]),inr]
# print(data_max1)
# # 列的最大值,索引就在行的位置,因为列已经固定了,索引变化的是行
# # 行的最大值,索引就是列的位置'''数组扩展(其实就是生成一个新的矩阵,矩阵中的元素就是该数组的复制粘贴),matlab中也有类似的操作'''
# a = np.arange(0, 40, 10)
# print(a)
# # 扩展a(扩展两行三列)
# b = np.tile(a, (2,3))
# print(b)'''每行排序,也可以返回对应关系的索引'''
# a = np.array([[4, 3, 5,],
#               [1, 2, 1]])
# print(a)
# print("--------------------")
# # 按行排序(每行从小到大排)
# b = np.sort(a,axis=1)# 其实本质上来说,axis横轴纵轴就是指示了处理数据的方向
# #因为处理数据的方向是纵轴方向,所以在纵轴上点一个,就是处理一行,再往下点一个,就是继续处理下一行
# print(b)
# print("--------------------")
# print(a) #验证a矩阵是否改变,结果是不变
# print("--------------------")
# a.sort(axis=1) #对a矩阵每行从小到大的排序将永久赋值到a
# print(a)
# print("--------------------")
# a = np.array([4, 3, 1, 2])
# # 返回从小到大的数据对应的索引
# j = np.argsort(a)
# print(j)
# print("--------------------")
# print(a[j])# 通过索引取出值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/114133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章五: IO管理

目录 IO设备的基本概念和分类 IO设备的分类 按使用特性分类 按传输速率分类 按信息交换单位分类 IO控制器 l/O设备的电子部件&#xff08;I/O控制器&#xff09; l/O控制器的组成 内存映像I/o vs.寄存器独立编址 IO控制方式 程序直接控制方式 中断驱动方式 DMA方式 ​编辑通…

java1.8流的新特性使用

案例描述 今天跟着黑马程序员的视频&#xff0c;完成“瑞吉外卖”项目的菜品信息管理模块的时候&#xff0c;遇到了一个比较陌生的写法 用到了Java8的新特性 stream().map((item) -> {}).collect() List<DishDto> collect records.stream().map((item) -> {DishDt…

Linux网络编程杂谈(聊聊网络编程背后的故事)

数据是如何传输到物理网络上的&#xff1f; 以TCP为例&#xff0c;当 TCP 决定发送数据时&#xff0c;这些数据需要经过多个处理阶段才能真正被传输到物理网络。其中一个关键步骤是将数据移动到网络接口卡 (NIC)。以下是这个过程的详细描述&#xff1a; 数据序列化: TCP 会为要…

10.17七段数码管单个多个(部分)

单个数码管的实现 第一种方式 一端并接称为位码&#xff1b;一端分别接收电平信号以控制灯的亮灭&#xff0c;称为段码 8421BCD码转七段数码管段码是将BCD码表示的十进制数转换成七段LED数码管的7个驱动段码&#xff0c; 段码就是LED灯的信号 a为1表示没用到a&#xff0c;a为…

文件读取结束的判定

大家好啊&#xff0c;我们今天来补充文件操作的读取结束的判定。 被错误使用的feof 牢记&#xff1a;在文件读取过程中&#xff0c;不能用feof函数的返回值直接用来判断文件的是否结束而是应用于当文件读取结束的时候&#xff0c;判断是读取失败结束&#xff0c;还是遇到文件尾…

快速排序(sort用法)

在头文件#include<algorithm>中 for (int i 0; i < m; i)cin >> arr[i];sort(arr, arr m);for (int i 0; i < m; i)cout << arr[i]; sort()函数可以对给定区间所有元素进行排序。 它有三个参数sort(begin, end, cmp)&#xff0c; 其中begin为指向…

Qt第六十五章:自定义菜单栏的隐藏、弹出

目录 一、效果图 二、qtDesigner 三、ui文件如下&#xff1a; 四、代码 一、效果图 二、qtDesigner 原理是利用属性动画来控制QFrame的minimumWidth属性。 ①先拖出相应的控件 ②布局一下 ③填上一些样式 相关QSS background-color: rgb(238, 242, 255); border:2px sol…

量子力学期末复习--1

量子力学解题技巧--1 基础知识 薛定谔方程 Ehrenfest 定理 不确定性原理&#xff1a;正则对易关系&#xff1a;自由粒子&#xff1a;对于自由粒子&#xff0c;分离变量解不代表物理上可实现的态。但其含时薛定谔方程的一般解仍旧是分离变量解的线性组合 典型题目 自由粒子…

Ajax 笔记/练习

Ajax 异步JavaScript和XML 作用 实现 HTML 在不整体刷新的情况下&#xff0c;通过后台服务器&#xff0c;请求数据并局部更新页面内容 操作流程 Ajax 使用 XMLHttpRequest 通过new 关键字可以创建XMLHttpRequest() 对象。 var req new XMLHttpRequest();方法和属性说明req.…

Rclone连接Onedrive

一、Rclone介绍 Rclone是一款的命令行工具&#xff0c;支持在不同对象存储、网盘间同步、上传、下载数据。 我们这里连接的onedrive&#xff0c;其他网盘请查看官方文档。 注意&#xff1a; 需要先在Windows下配置好了&#xff0c;然后再将rclone配置文件复制到Linux的rclone配…

Go语言中:list := make([]Item, 0) var list []Item 这两种写法有什么区别?

list : make([]Item, 0) 和 var list []Item 都是用于创建一个切片&#xff08;slice&#xff09;的语法&#xff0c;但它们在 Go 中有一些区别。 list : make([]Item, 0)&#xff1a; 这是一种使用 make 函数来创建切片的方式&#xff0c;其中 Item 是切片的元素类型。make 函…

Elasticsearch:painless script 语法基础和实战

摘要&#xff1a;Elasticsearch&#xff0c;Java script的作用 script是Elasticsearch的拓展功能&#xff0c;通过定制的表达式实现已经预设好的API无法完成的个性化需求&#xff0c;比如完成以下操作 字段再加工/统计输出字段之间逻辑运算定义查询得分的计算公式定义特殊过…

cnn 直线检测笔记

目录 mlsd直线检测: ULSD-ISPRS曲线检测 划线标注工具: 可视化标注代码: mlsd直线检测: mlsd_pytorch

JavaScript中 判断网络状态的几种方法

1. 使用 Navigator onLine 属性 Navigator onLine 属性判断浏览器是否在线&#xff0c;在线返回 true&#xff0c;离线返回 false&#xff1b; Navigator onLine 是只读属性&#xff0c;所有主流浏览器都支持 onLine 属性&#xff1b; if (window.navigator.onLine) {console…

【proteus】8086仿真、汇编语言

1.创建好新项目 2.点击source code 弹出VSM 3. 4.注意两个都不勾选 可以看到schematic有原理图出现 5. 再次点击source code 6.project/project settings&#xff0c;取消勾选embed 7. add 8.输入文件名保存后&#xff1a; 注意&#xff1a;proteus不用写dos的相关语句 。

【NPM】particles.vue3 + tsparticles 实现粒子效果

在 NPM 官网搜索这两个库并安装&#xff1a; npm install element-plus --save npm i tsparticles使用提供的 vue 案例和方法&#xff1a; <template><div><vue-particlesid"tsparticles":particlesInit"particlesInit":particlesLoaded&…

Kubernetes 学习总结(39)—— Kubernetes 之 Pause 容器详解

一、概念和作用 在 Kubernetes 中&#xff0c;Pause 容器是一种特殊类型的容器&#xff0c;它的主要作用是充当依赖其他容器的容器&#xff0c;为其他容器提供一个可靠的、隔离的运行环境。 Pause 容器是一种轻量级的容器&#xff0c;它本身不包含任何业务逻辑&#xff0c;只是…

华为OD 磁盘容量排序(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…

自然语言处理---Transformer机制详解之BERT模型特点

1 BERT的优点和缺点 1.1 BERT的优点 通过预训练, 加上Fine-tunning, 在11项NLP任务上取得最优结果.BERT的根基源于Transformer, 相比传统RNN更加高效, 可以并行化处理同时能捕捉长距离的语义和结构依赖.BERT采用了Transformer架构中的Encoder模块, 不仅仅获得了真正意义上的b…

华为OD机试 - 代表团坐车 - 动态规划(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…