数据分析基础之《numpy(3)—基本操作》

news2024/12/28 5:56:05

一、基本操作

1、adarray.方法()

2、np.函数名()

二、生成数组的方法

1、生成0和1的数组

为什么需要生成0和1的数组?
我们需要占用位置,或者生成一个空的数组

(1)ones(shape[, dtype, order])
生成一组1
shape:形状
dtype:类型

(2)zeros(shape[, dtype, order])
生成一组0
shape:形状
dtype:类型

(3)例子
指定形状的话既可以是元组(3, 4),也可以是列表[2, 3]

# 生成0和1的数组
# 生成3行4列的数组
np.zeros(shape=(3, 4), dtype="float32")

np.ones(shape=[2, 3], dtype=np.int32)

2、从现有数组生成

(1)array(object[, dtype, copy, order, subok, ndmin])

(2)asarray(a[, dtype, order])

(3)copy(a[, order])

(4)例子

# 从现有数组生成
score

data1 = np.array(score)

data1

data2 = np.asarray(score)

data2

data3 = np.copy(score)

data3

# 修改第4行第2列
score[3, 1] = 10000

score

data1

data2

data3

修改了原数组值之后,data1没有变化,data2有变化,data3没有变化

(5)关于array和asarray的不同
np.array() np.copy()  深拷贝
np.asarray()  浅拷贝

3、生成固定范围的数组

(1)np.linspace(start, stop, num, endpoint, retstep, dtype)
生成等间隔的序列,生成的值左闭右闭,等距离
说明:
start:序列的起始值
stop:序列的终止值,如果endpoint为true,该值包含于序列中
num:要生成的等间隔样例数量,默认为50
endpoint:序列中是否包含stop值,默认为true
retstep:如果为true,返回样例,以及连续数字之间的步长
dtype:输出ndarray的数据类型

(2)np.arange([start,] stop, [step])
和range()用法一样,生成左闭右开[start, stop),step是步长

(3)例子

# 生成固定范围的数组
np.linspace(0, 10, 5)

np.arange(0, 11, 5)

4、生成随机数组
np.random模块

(1)均匀分布
均匀分布(uniform distribution)是概率统计中的重要分布之一。顾名思义,均匀,表示可能性相等的含义。均匀分布在自然情况下极为罕见,而人工栽培的有一定株行距的植物群落即是均匀分布

(2)函数
np.random.uniform(low=0.0, high=1.0, size=None)
功能:从一个均匀分布[low, high)中随机采样,注意定义域是左闭右开,即包含low,不包含high
参数介绍:
low:采样下界,float类型,默认值为0
high:采样上界,float类型,默认值为1
size:输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k),则输出mnk个样本,缺省时输出1个值
返回值:
ndarray类型,其形状和参数size中描述一致

(3)例子

# 生成随机数组
data1 = np.random.uniform(low=-1, high=1, size=1000000)

data1

import matplotlib.pyplot as plt

# 1、创建画布
plt.figure(figsize=(20, 8), dpi=100)

# 2、绘制直方图
plt.hist(data1, 1000)

# 3、显示图像
plt.show()

(4)正态分布
正态分布是一种概率分布。正态分布是具有两个参数μ和σ的连续性随机变量的分布,第一参数μ是服从正态分布的随机变量的均值,第二个参数σ是此随机变量的标准差,所以正态分布记做N(μ, σ)

正态分布的应用
生活、生产与科学实验中很多随机变量的概率分布都可以近似地用正态分布来描述

正态分布特点
μ决定了其位置,标准差σ决定了分布的幅度,当μ=0,σ=1时的正态分布是标准正态分布

标准差怎么来的
标准差是方差开平方根得来的

其中M为平均值,n为数据总个数,S为标准差,S^2可以理解为方差

方差为0,是所有数据一样的情况下。这组数据非常稳定,波动非常小

标准差与方差的意义
可以理解成数据的一个离散程度的衡量

(5)函数
np.random.normal(loc=0.0, scale=1.0, size=None)
参数介绍:
loc:float类型,此概率分布的均值(对应着整个分布的中心centre)
scale:float类型,此概率分布的标准差(对应于整个分布的宽度,scale越大,图像越矮胖,scale越小,图像越高瘦)
size:输出的数量,默认为None,只输出一个值

(6)例子

# 正态分布
data2 = np.random.normal(loc=1.75, scale=0.1, size=1000000)

data2

# 1、创建画布
plt.figure(figsize=(20, 8), dpi=100)

# 2、绘制直方图
plt.hist(data2, 1000)

# 3、显示图像
plt.show()

三、案例:随机生成8只股票2周的交易日涨幅数据

1、8只股票,两周(10天)的涨跌幅数据,如何获取?
(1)两周的交易日数量为:2 x 5 = 10
(2)随机生成涨跌幅在某个正态分部内,比如均值0,方差1

2、股票涨跌幅数据生成

# 案例:随机生成8只股票2周的交易日涨幅数据
stock_change = np.random.normal(loc=0, scale=1, size=(8, 10))

stock_change

四、数组的索引、切片

1、获取第一个股票的前3个交易日的涨跌幅数据

# 获取第一个股票的前3个交易日的涨跌幅数据
stock_change[0, 0:3]

2、一维、二维、三维的数组如何索引
下标都是从0开始

# 一维、二维、三维的数组如何索引
a1 = np.array([[[1,2,3], [4,5,6]], [[7,8,9], [10,11,12]]])

a1.shape

# 索引、切片
a1[0,0,1]

a1[1,0,1] = 100000

a1

五、形状修改

1、需求:让刚才的股票行、日期列返过来,变成日期行、股票列

2、ndarray.reshape(shape[, order])
返回新的ndarray,原始数据不改变

# 形状修改
# 需求:让刚才的股票行、日期列返过来,变成日期行、股票列
stock_change

stock_change.shape
# 8行10列,转换成10行8列
stock_change.reshape((10, 8))

reshape函数,并没有将行列进行转换,只是将这组数据重新进行了分割,排列顺序没有变

3、ndarry.resize(shape[, order])
没有返回值,对原始的ndarray进行了修改

stock_change

stock_change.shape

stock_change.resize((10, 8))

stock_change.shape

stock_change

resize函数修改后的效果和reshape返回新的ndarray一样,但是它改变了原始的数据

4、ndarray.T
转置,行变成列,列变成行。修改原数据

# 把形状改回来
stock_change.resize((8, 10))

stock_change

stock_change.T

六、类型修改

1、ndarray.astype(type)
返回转换后的ndarray,不修改原数据类型

# 类型修改
stock_change.astype("int32")

2、ndarray.tostring([order])
tostring() is deprecated. Use tobytes() instead.

3、ndarray.tobytes([order])
转换成bytes,ndarray序列化到本地

stock_change.tobytes()

七、数组的去重

1、ndarray.unique()

# 数组的去重
temp = np.array([[1,2,3,4], [3,4,5,6]])
np.unique(temp)

一维数据可以用set(),计算哈希去重

方法二:

set(temp.flatten())

先用flatten()方法把数组拍扁,再用set()方法去重

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

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

相关文章

算法:二叉树的遍历

一、31种遍历方法 (1)先序法(又称先根法) 先序遍历:根,左子树,右子树 遍历的结果:A,B,C 遍历的足迹:沿途经过各结点的“左部” (2)中序法(又称中根法&#…

基于Java的教学信息反馈系统设计与实现(源码+调试)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于Java的教学信息反馈…

ffmpeg可以做什么

用途 FFmpeg是一个功能强大的多媒体处理工具,可以处理音频和视频文件。它是一个开源项目,可在各种操作系统上运行,包括Linux、Windows和Mac OS X等。以下是FFmpeg可以做的一些主要任务: 转换媒体格式:可将一个媒体格式…

大创项目推荐 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…

QT实现四则运算计算器

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setMaximumSize(240,300);this->setMinimumSize(240,300);this->setWindowTitle("计算器&…

案例精选|聚铭综合日志分析系统助力长房集团“智慧房产”信息化建设

长沙房产(集团)有限公司(简称“长房集团”)始创于2004年3月,是一家由长沙市人民政府授权组建的国有独资企业。截至2021年底,企业总资产逾452亿元,总开发面积1300多万平方米,已开发项…

msvcrtd.dll下载安装方法,解决msvcrtd.dll找不到的问题

在这篇文章中,我们将详细讨论msvcrtd.dll文件的下载安装方法,并分析出现找不到msvcrtd.dll的情况及解决方法。如果你遇到了与msvcrtd.dll相关的问题,本文将为你提供全面且详细的解决方案。 一.什么是msvcrtd.dll文件 首先,让我们…

openmediavault debian linux安装配置企业私有网盘(三 )——raid5与btrfs文件系统无损原数据扩容

一、适用环境 1、企业自有物理专业服务器,一些敏感数据不外流时,使用openmediavault自建NAS系统; 2、在虚拟化环境中自建NAS系统,用于内网办公,或出差外网办公时,企业内的文件共享; 3、虚拟化环…

电子电工企业品牌网站建设的作用是什么

电子电工企业在市场中有较高的需求度,比如电子元件、电子产品等,这些都属于高信任度产品,对需求方来说,需要查看商家全部信息、包括资质、产品/服务内容、案例等,因此对电子电工企业来讲,需要贯通品牌路径&…

遥感论文 | Scientific Reports | 一种显著提升遥感影像小目标检测的网络!

论文题目:MwdpNet: towards improving the recognition accuracy of tiny targets in high-resolution remote sensing image论文网址:https://www.nature.com/articles/s41598-023-41021-8 摘要 提出MwdpNet,以提高对高分辨率遥感&#xf…

MeterSphere files 任意文件读取漏洞复现 (CVE-2023-25573)

0x01 产品简介 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能,全面兼容 JMeter、Selenium 等主流开源标准。 0x02 漏洞概述 MeterSphere /api/jmeter/download/files 路径文件存在文件读取漏洞,攻击者可通过该漏洞读取系统重要…

一点技术细节

匈牙利算法: 14-4: 匈牙利算法 Hungarian Algorithm_哔哩哔哩_bilibili 课件:https://github.com/wangshusen/AdvancedAlgorithms.git SWin transformer: Swin Transformer论文精读【论文精读】_哔哩哔哩_bilibili patch:灰色 窗口&…

c语言单向链表

看如下代码,这是一个完整的可运行的c源文件,要注意的点: c语言程序运行不一定需要头文件NULL其实是 (void*)0,把指针赋值成(void*)0,就是防止程序员不想该指针被引用的时候被引用,引用地址为0的值程序会引起系统中断&…

JNA实现JAVA调用C/C++动态库

1.JNA JNA全称Java Native Access,是一个建立在经典的JNI技术之上的Java开源框架(https://github.com/twall/jna)。JNA提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而…

【C++11特性篇】盘点C++11中三种简化声明的方式【auto】【decltype】【nullptr】(3)

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一.auto&范围for二.decltyp…

flume:Ncat: Connection refused.

一:nc -lk 44444 和 nc localhost 44444区别 nc -lk 44444 和 nc localhost 44444 是使用 nc 命令进行网络通信时的两种不同方式。 1. nc -lk 44444: - 这个命令表示在本地监听指定端口(44444)并接受传入的连接。 - -l 选项…

使用Redis构建简单的社交网站

文章目录 第1关:创建用户与动态第2关:处理用户关系第3关:状态与信息流 第1关:创建用户与动态 编程要求 在Begin-End区域编写 create_user(login_name, real_name) 函数,实现创建新用户的功能,具体参数与要…

添加E1000网卡进行测试,只有VMXNET3性能的四分之一

正文共:1444 字 14 图,预估阅读时间:2 分钟 我们前面介绍了VMware ESXi 6.7中的适配器类型性能(VMWare ESXi中,不同的虚拟网卡性能竟然能相差三倍!),当时的配置项主要为E1000e和VMXN…

格式化Echarts的X轴显示,设置显示间隔

业务需求:x轴间隔4个显示,并且末尾显示23时 x轴为写死的0时-23时,使用Array.from data: Array.from({ length: 24 }).map((_, i) > ${i}时) 需要在axisLabel 里使用 interval: 0, // 强制显示所有刻度标签,然后通过 formatter …

Java集合(六)Hashtable、ConcurrentHashMap

文章目录 Hashtable一、Hashtable介绍1.1 Hashtable是什么1.2 Hashtable特点1.3 Hashtable常见方法 二、Hashtable源码分析2.1 节点2.2 构造方法2.3 获取元素2.4 存入元素2.5 判断是否包含某个key/value2.6 替换元素2.7 删除元素2.8 获取value集合2.9 哈希2.10 扩容 Concurrent…