python_数据分析_numpy库

一、创建ndarray

*ndarray是NumPy中表示数组的重要类型

1、使用np.array()创建

*参数列表:[1,2,3,4]

注:(1)、numpy默认ndarray的所有元素的类型是相同的
​
(2)、如果传入的数据类型不同,会被按照优先级强制转换为同一类型,其中优先级为   str >float >int
​
(3)、ndarray常见的数据类型:int: int8、uint8、int16、int32、int64float:float16、float32、float64str:字符串
a = [1,2,3,4,5]
n = np.array(a)
print(n)
#显示类型
print(type(n))
#显示形状
print(n.shape)
2、使用np的routines函数创建
(1)、np.ones(shape,dtype = None,order = 'C')

*创建一个所有元素都为1的多维数组

参数说明:

  • shape:形状

  • dtype=None,元素类型

order:{‘C’,‘F’},可选,默认值:C是否在内存中以行主或列主顺序存储多维数据,一般默认

n = np.ones(shape=(3,),dtype = np.int8)
(2)、np.zeros(shape,dtype = float,order = 'C')

*创建一个所有元素都为0的多维数组

参数说明:

  • *shape:形状

  • *dtype = None:元素类型

n = np.zeros(shape = (5,5),dtype = np.int16)
(3)、np.full(shape,fill_value,dtype = None,order = 'C')

*创建一个所有元素都为指定元素的多维数组

参数说明:

  • *shape:形状

  • *fill_value:填充值

  • *dtype = None:元素类型

n = np.full(shape = (3,4),fill_value = 8)
(4)、np.eye(N,M=None,k=0,dtype=float)

*对角线为1其他位置为0的二维数组

参数说明:

  • *N:行数

  • *M:列数,默认为None,表示和行数一样

  • *k :主对角线向右偏移的位置

  • *dtype = None:元素类型

n = np.eye(9,9,k=3)
(5)、np.linspace(start,stop,num = 50,endpoint = True,restep = False,dtype = None)

*创建一个等差数列

参数说明:

  • start:开始值

  • stop:结束值

  • num= 50:等差数列中默认有50个数

  • endpoint = True:是否包含结束值

  • restep = False:是否返回等差值(步长)

  • dtype = None:元素类型

n = np.linspace(1,9,5)
print(n)
(6)、np.arange(start,stop,step,dtype = None)

*创建一个数值范围的数组

*和Python中range功能类似

参数说明:

start:开始值

stop:结束值(不包含)

step:步长

dtype = None:元素类型

n = np.arange(2,10,2)
print(n)
(7)、np.random.randint(low,high = None,size = None,dtype = None)

*创建一个随机整数的多维数组

参数说明:

  • low:最小值

  • high:None:最大值

    • 注:high=None时,生成的数值在(0,low)之间

    • 如果使用high这个值,则生成的数值在(low,high)之间

  • size = None:数组形状,默认只输出一个随机值

  • dtype = None:元素类型

#随机整数:单个数
n = np.random.randint(3,10)
print(n)
#随机整数:一维数组
n = np.random.randint(3,10,size=6)
print(n)
#随机整数:二维数组
n = np.random.randint(3,10,size=(3,4))
print(n)
#随机整数:三维数组
n = np.random.randint(0,256,size=(20,40,3))
print(n)
(8)、np.random.randn(d0,d1,......,dn)

*创建一个服从标准正态分布的多维数组

*创建一个所有元素都为1的多维数组

参数说明:

  • dn:第n个维度的值

    n = np.random.randn(1,2,3)
    print(n)

(9)、np.random.normal(loc = 0.0,scale = 1.0,size = None)

*创建一个服从正态分布的多维数组

参数说明:

  • loc:均值

  • scale:标准差,对应分布的宽度,scale越大,正态分布的曲线越矮胖,scale越小,曲线越高瘦

  • size = None:数组形状

n = np.random.normal(10,0.5,size=(3,4))
print(n)
(10)、np.random.random(size = None)

*创建一个元素为0~1(左闭右开)的随机数的多维数组

参数说明:

  • size= None:数组形状

n = np.random.random(size=(3,4))
print(n)
(11)、np.random.rand(d0,d1,......,dn)

*同np.random.random(size = None)

*创建一个元素为0~1(左闭右开)的随机数的多维数组

参数说明:

  • dn:第n个维度的数值

n = np.random.rand(3,4)
print(n)

二、ndarray的属性

1、ndim(维度)
n = np.random.rand(3,4)
print(n)
w = n.ndim
print(w)
2、shape(形状)

*三个数字分别表示各个维度的长度

n = np.random.rand(3,4)
print(n)
w = n.ndim
print(w)
x = n.shape
print(x)
3、size(总长度)

*即:行和乘列和

n = np.random.rand(3,4)
print(n)
w = n.ndim
print(w)
x = n.shape
print(x)
c = n.size
print(c)
4、dtype(元素类型)
n = np.random.rand(3,4)
print(n)
w = n.ndim
print(w)
x = n.shape
print(x)
c = n.size
print(c)
l = n.dtype
print(l)

三、ndarray的基本操作

1、索引

一维和列表索引的操作一致。

2、 根据索引修改数据

(1)、将第二行全部数字改为0.88

n= np.random.rand(3,4)
print(n)
#将第二行全部数字改为0.88
n[1]=0.88
print(n)

(2)、将第二行最后一个数改为0.88

a= np.random.rand(3,4)
print(a)
#将第二行最后一个数改为0.88
a[1][3]=0.88
print(a)
3、切片
import numpy as np
#列表有逗号间隔
# I = [1,2,3,4,5,6,7,8]
# a = I[2:6]
# b = I[::-1]   #翻转
# print(a)
# print(b)
# #数组没有逗号间隔
# n = np.array(I)
# a = n[2:6]
# print(n)
# print(a)#对于二维数组的行切片
n = np.random.randint(0,10,size=(6,8))
# #取一行
# print(n[0])
# #连续取多行
# print(n[1:4])
# #取不连续多行
# print(n[[1,2,4]])#对于二维数组的列切片
n = np.random.randint(0,10,size=(6,8))
print(n)
#取一列
print(n[:,0])   #取第一列
print(n[1:4,0])  # 取第二到第四行的第一列
#取连续的多列:切片
print(n[:,2:5])  #取第三到第五列的所有行
#取不连续的多列:中括号
print(n[:,[1,3,4]])  #取第二列和第四列和第五列的所有行
4、翻转

(1)、行翻转

n[::-1]

(2)、列翻转

n[:,::-1]
5、变形

使用reshape函数

import numpy as npn = np.arange(1,21)
print(n)#reshape:将数组改变形状  变成二维
a = np.reshape(n,newshape=(4,5))
print(a)#使用-1:表示任意剩余维度长度
e = n.reshape(4,-1)
print(e)
r = n.reshape(-1,2)
print(r)
6、级联(合并)
#级联(合并)
a = np.concatenate((n1,n2))  #上下合并
print(a)l = np.concatenate((n1,n2),axis=0)  #上下合并
print(l)p = np.concatenate((n1,n2),axis=1)  #左右合并
print(p)#左右合并
i = np.hstack((n1,n2))
print(i)#上下合并
u = np.vstack((n1,n2))
print(u)
7、拆分

(1)、np.split()

(2)、np.hsplit()

(3)、np.vsplit()

import numpy as npn = np.random.randint(0,100,size=(4,4))
print(n)
a = np.split(n,4)
print(a)
b = np.hsplit(n,4)
print(b)
#垂直拆分,平均拆成3份
c = np.vsplit(n,4)
print(c)
#按照指定位置拆分
d = np.vsplit(n,(1,2,4))
print(d)
#水平拆分
e = np.hsplit(n,4)
print(e)
print()
#split:做水平和垂直拆分
#axis = 0:行
#axis = 1:列
a = np.split(n,4)
a = np.split(n,4,axis=0)
print(a)
print()
m = np.split(n,4)
m = np.split(n,4,axis=1)
print(m)
8、拷贝
import numpy as np#n2不会随着n的变化而变化
n = np.random.randint(0,10,size=(2,3))
n2 = n.copy()
n[0][0] = 0
print(n2)
print(n)#注:如果用n3 = n,则n2会随着n的变化而变化
n3 = n
print(n3)

四、numpy的聚合操作

1、求和np.sum()
import numpy as npn = np.arange(10)
print(n)s = np.sum(n)
print(s)n = np.random.randint(0,10,size=(3,5))
print(n)
s1 = np.sum(n)
print(s1)   #全部数加起来
s2 = np.sum(n,axis=0)
print(s2)   #表示每一列的多行求和
s3 = np.sum(n,axis=1)
print(s3)   #表示每一行的多列求和
2、最小值np.min
3、最大值np.max
4、平均值np.mean
5、平均值np.average
6、中位数np.median
7、百分位数np.percentile
8、最小值对应的下标np.argmin
9、最大值对应的下标np.argmax
10、标准差np.std
11、方差np.var
12、次方,求幂np.power
13、按条件查找np.argwhere
14、np.nansum
  • *nan:数值类型,not a number:不是一个正常的数值,表示空

  • *np.nan:float类型

#对于含有空的数组,要用np.nansum进行求和
n = np.array([1,2,3,np.nan])
print(n)
#实质是去掉空值后的数组进行求和
s4 = np.nansum(n)
print(s4)

五、矩阵操作

1、基本的矩阵操作

算术运算符:加减乘除

矩阵和矩阵之间运算

数与矩阵运算

2、矩阵乘积

np.dot(第一个矩阵的列数等于第二个矩阵的行数)

import numpy as npn1 = np.random.randint(0,10,size=(4,4))
n2 = np.random.randint(0,10,size=(4,5))
print(n1,n2)
print()
n3 = np.dot(n1,n2)
print(n3)
3、矩阵的逆
n4 = np.linalg.inv(n2)
print(n4)
4、行列式的计算
n5 = np.round(np.linalg.det(n1))
print(n5)
5、矩阵的秩
n6 = np.linalg.matrix_rank(n1)
print(n6)

六、ndarray的广播机制

(1)、为缺失的维度补维度

(2)、缺失元素用已有的数组填充

import numpy as npx = np.full(shape=(3,3),fill_value=2)
print(x)
y = np.arange(3)
print(y)
z = x+y
print(z)
#注:第二个数组会自动补上两行[0 1 2],然后在进行相加

七、数学操作

import numpy as npn = np.array([1,2,3,5,5,44,55,66])#绝对值
print(np.abs(n))
#平方根
print(np.sqrt(n))
#平方
print(np.square(n))
#指数
print(np.exp(n))
#自然对数
print(np.log(n))
#以2为底的对数
print(np.log2(n))
#以10为底的对数
print(np.log10(n))
#正弦函数
print(np.sin(n))
#余弦函数
print(np.cos(n))
#正切函数
print(np.tan(n))
#向上取整
print(np.ceil(n))
#四舍五入
print(np.round(n,2))
#向下取整
print(np.floor(n))
#累加
print(np.cumsum(n))

八、ndarray的排序

1、np.sort()

不改变输入

import numpy as npn = np.array([55,44,8,2,9,7,3,6])
print(np.sort(n))
print()
2、ndarray.sort()

本地处理,不占用空间,但不改变输入

import numpy as npn1 = np.random.randint(0,10,size=8)
print(n1)
n1.sort()
print(n1)

九、文件操作

1、保存数组到npy或npz文件

save:保存ndarray到一个npy文件。

savez:将多个array保存到一个npz文件中。

import numpy as npx = np.arange(5)
y = np.arange(10,20)np.save('x',x)
np.savez('arr.npz',xarr = x,yarr = y)
a = np.load('x.npy')
b = np.load('arr.npz')['yarr']print(a)
print(b)
2、保存数组到csv或txt文件
n = np.random.randint(0,10,size=(3,4))
#存储到csv或txt
#delimiter = ',':分隔符
np.savetxt('arr.csv',n,delimiter=',')
#读取csv或txt
#注:最新版numpy不能用dtype要用astype
c = np.loadtxt('arr.csv',delimiter=',').astype(np.int8)
print(c)

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

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

相关文章

vue--两种定时任务cron表达式组件比较选择

背景&#xff1a; 使用vue页面中cron表达式的组件&#xff0c;实现定时任务参数配置。 方案1 vue-cron 安装插件 npm install vue-cron --save 全局引入&#xff0c;修改main.js import Vue from vue import VueCron from vue-cron Vue.use(VueCron);页面配置 html<el-…

Java入门-可重入锁

可重入锁 什么是可重入锁? 当线程获取某个锁后&#xff0c;还可以继续获取它&#xff0c;可以递归调用&#xff0c;而不会发生死锁&#xff1b; 可重入锁案例 程序可重入加锁 A.class,没有发生死锁。 sychronized锁 package com.wnhz.lock.reentrant;public class Sychroniz…

多普勒变化率的应用 与 FPGA

1.多普勒变化率是一个描述波源和观察者相对速度变化的物理量&#xff0c;它与加速度有关。 多普勒效应是指当波源和观察者之间存在相对运动时&#xff0c;观察者接收到的波频率与波源发射的频率之间的差异。这种现象在声波、电磁波等多种波动中都会出现。多普勒变化率通常用来…

linux系统内核升级

1.查看旧版本内核 2.导入密钥 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 3.安装yum源 rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm4.启用elrepo-kernel仓库并安装最新内核版本 yum --enablerepoelrepo-kernel install …

一文弄明白KeyedProcessFunction函数

引言 KeyedProcessFunction是Flink用于处理KeyedStream的数据集合&#xff0c;它比ProcessFunction拥有更多特性&#xff0c;例如状态处理和定时器功能等。接下来就一起来了解下这个函数吧 正文 了解一个函数怎么用最权威的地方就是 官方文档 以及注解&#xff0c;KeyedProc…

c++实现栈和队列类

c实现栈和队列类 栈(Stack)Stack示意图Stack.cpp 队列(queue)queue 示意图queue.cpp 栈(Stack) Stack示意图 Stack.cpp #pragma once #include "ListStu.cpp"template<typename T> class Stack { public: /* * void push(T& tDate)* 参数一 &#xff1a;…

【OCR专题文章】

目录 一、数据获取及预处理方法篇 二、两阶段算法篇(检测识别) 三、一阶段算法篇(Enc-Dec) 四、拓新篇 本栏聚焦在OCR的相关算法&#xff0c;专栏内文章的代码均已实现。 一、数据获取及预处理方法篇 【数据获取】 合同数据获取&#xff1a;【OCR】【专题系列】二、数据获取-…

解决windows无法访问wsl下docker服务

笔者在初学使用wsl跑docker时,遇到了windows无法访问的问题,并且浏览了大部分的文章,发现并没有起效,在反复试错终于成功之后,总结为以下几点: 1.升级至wsl2 2.将.wslconfig文件(用户文件夹下)中的如下镜像服务关闭删除 networkingModemirrored 3.打开wsl防火墙相应的端口 …

记录解决uniapp使用uview-plus在vue3+vite+ts项目中打包后样式不能显示问题

一、背景 从 vue2uview1 升级到 vue3vitetsuview-plus ,uview组件样式打包后不显示&#xff0c;升级前uview 组件是可以正常显示&#xff0c;升级后本地运行是可以正常显示&#xff0c;但是打包发布成H5后uview的组件无法正常显示&#xff0c;其他uniapp自己的组件可以正常显示…

Vue 中 onclick和@click区别

文章目录 一、直接上结论二、验证代码&#xff0c;可直接运行三、点击结果 一、直接上结论 onclick 只能触发 js的原生方法&#xff0c;不能触发vue的封装方法click 只能触发vue的封装方法&#xff0c;不能触发js的原生方法 二、验证代码&#xff0c;可直接运行 <!DOCTYP…

Vue3 + Ts (使用lodash)

安装 npm i --save lodash使用 import _ from lodash⚠️报警告&#xff1a;&#xff01;&#xff01;&#xff01; 此时还需要安装ts声明文件库 npm install types/lodash -D安装之后重启Vscode还是会提示上面的警告&#xff0c;此时还需在tsconfig.ts里面配置 {"c…

快速将excel/word表格转换为web页面(html)的方法

前言 在进行开发企业信息化建设的过程&#xff0c;应该有很多这样的场景&#xff0c;就是将现有的电子表格记录的方式转换为在数据系统中进行网页上报。也就是需要根据当前一直使用的表格制作一个上传这个表格信息的网页&#xff0c;如果要减少系统的使用学习成本&#xff0c;…

【Day55】代码随想录之动态规划_买卖股票含冷冻期和手续费

文章目录 动态规划理论基础动规五部曲&#xff1a;出现结果不正确&#xff1a; 1. 最佳买卖股票的时机含冷冻期2. 买卖股票的最佳时机含手续费 动态规划理论基础 动规五部曲&#xff1a; 确定dp数组 下标及dp[i] 的含义。递推公式&#xff1a;比如斐波那契数列 dp[i] dp[i-1…

【Elasticsearch专栏 01】深入探索:Elasticsearch的正向索引和倒排索引是什么

文章目录 什么是Elasticsearch的正向索引和倒排索引&#xff1f;1.倒排索引&#xff08;Inverted Index&#xff09;2.正向索引&#xff08;Forward Index&#xff09;3.小结 什么是Elasticsearch的正向索引和倒排索引&#xff1f; 首先&#xff0c;要明确的是&#xff0c;Ela…

leetcode:78.子集

1.树形结构&#xff1a;往后依次取该数字往后的数字&#xff08;前面的不要取&#xff0c;否则子集会重复&#xff09;&#xff1b;每一层递归的结果都要放入结果集&#xff0c;而并非只放叶子节点。 代码实现&#xff1a; #达到了叶子节点&#xff08;终止条件&#xff09; …

抖音百科词条创建在哪里?

抖音百科就是头条百科&#xff0c;头条百科是一个在线百科全书平台&#xff0c;用户可以在上面创建、编辑和浏览各种百科词条。头条百科词条可以被抖音抓取到&#xff0c;从而获得更多流量和曝光&#xff0c;所以当你创建一个抖音百科词条的时候&#xff0c;就能更加提高自身的…

logbak日志单独打印(方法层级)

logbak日志单独打印 问题 前几天朋友在群里问&#xff0c;怎么针对方法打印打印日志&#xff0c;不是针对类。 解决办法 方法层 GetMapping("getLog1")public String getLog1(){Logger specialLogger LoggerFactory.getLogger(TestController.class.getName() …

人工智能_CPU安装运行ChatGLM大模型_ChatGlm-6B_启动命令行对话_安装API调用接口_005---人工智能工作笔记0100

然后我们再进入 /data/module/ChatGLM-6B-main文件夹 然后我们去启动,命令行工具 python3 cli_demo.py 可以看到也是可以用了. 正常可以用了. 然后主要来看,如何使用api来调用呢,这样才可以,做自己的界面 可以看到就非常简单了只需要: 走到 /data/module/

9-1 A. 图综合练习--构建邻接表

题目描述 已知一有向图&#xff0c;构建该图对应的邻接表。 邻接表包含数组和单链表两种数据结构&#xff0c;其中每个数组元素也是单链表的头结点&#xff0c;数组元素包含两个属性&#xff0c;属性一是顶点编号info&#xff0c;属性二是指针域next指向与它相连的顶点信息。 单…

即时设计和sketch对比

在设计领域&#xff0c;有很多易于使用的设计软件&#xff0c;每个软件都有自己的特点&#xff0c;但在使用中也会有一些限制。例如&#xff0c;传统的Sketch。Sketch是一款古老的UI设计软件。自2010年推出以来&#xff0c;已有10多年的历史&#xff0c;但它始终仅限于MAC。到目…