当前位置: 首页 > news >正文

numpy学习总结二

单词发音:
squeeze 发音:死贵子
concatenation [kɒnˌkætəˈneɪʃən] 拼接;串联
threshold ['θreʃhəʊld] 死re后的
quantile 拷n太哦 分位数
因果不能改
智慧不能赐
正法不可说
无缘不能度
天雨虽宽不润无根之草;佛法虽广不度无缘之人
1)某一个维度,实现元素复值

import numpy as np
arr = np.random.randint(1, 10, (2, 3))
print(arr)
print(arr.repeat(2, axis=0))  # 行复制,列不变 结果: 4行3列
print(arr.repeat(2, axis=1))  # 列复制,行不变 结果: 2行6列

实现按块复制元素

import numpy as np
arr = np.random.randint(1, 10, (2, 3))
print(np.tile(arr, 2)) # 按块复制
print(np.tile(arr, (2, 1))) # 按块当成一个元素(一个整体) 2行1列
print(np.tile(arr, (1, 2))) # 按块当成一个元素 1行2列

水平或竖直方向合并多个数组 (两种方法合并)

import numpy as np
arr1 = np.random.randint(1, 10, (2, 3))
arr2 = np.random.randint(1, 10, (3, 3))
print(arr1)
print(arr2)
print(‘*’ * 30)

目标: 合并 5行3列

print(np.vstack((arr1, arr2))) # 必须是以元组的形式传入
print(np.hstack((arr1, arr2[:2, :]))) # arr2[:2, :]意思是: 行是选2行,列是全选,本案例编程2行3列

指定维度上的合并

print(np.concatenate((arr1, arr2))) # 默认是垂直方向
print(np.concatenate((arr1, arr2[:2, :]), axis=1)) # 水平方向合并

r_和c_的使用

print(np.r_[arr1, arr2]) # 行合并
print(np.c_[arr1, arr2[:2, :]]) # 列合并

返回数组中某个维度的最大或者最小值索引

import numpy as np
arr = np.random.randint(1, 10, (2, 3))
print(arr)
print(arr.argmax()) # 按照行展平了之后的最大值
print(arr.argmin()) # 按照行展平了之后的最小值
print(arr.argmax(axis=1)) # 某一维度最大值axis=0/1, 本例应该返回3个值

限制打印元素的个数

import numpy as np
import sys
print(sys.maxsize)
np.set_printoptions(threshold=sys.maxsize) # 全部打印
print(np.arange(100))
np.set_printoptions(precision=3) # 3位有效数字
print(np.linspace(0, 10, 100))

返回一个有规律的数组,如数组: [1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]

import numpy as np
a = np.array([1, 2, 3])
print(a)

print(np.repeat(a, 3))

print(np.tile(a, 3))

最终结果如下:

print(np.r_[np.repeat(a, 3), np.tile(a, 3)])
print(np.hstack((np.repeat(a, 3), np.tile(a, 3))))
print(np.concatenate((np.repeat(a, 3), np.tile(a, 3)), axis=0))

列表实现向量化

import numpy as np
a = [1, 2, 3]
print(np.array(a) + 1) # 这就是向量化操作
def add(x, y):
return x + y
addNum = np.vectorize(add) # 用vectorize做了一层包装
ret = addNum(a, 1)
print(ret)
ret2 = addNum([1, 2, 3], [5, 5, 5]) # 两个列表相加
print(ret2)

求中位数和众数

import numpy as np

中位数是指将数据按⼤⼩顺序排列起来,形成⼀个数列,居于数列中间位置的那个数据。

如果数组是偶数,则是两个数的平均值

众数是在⼀组数据中,出现次数最多的数据 通过bincount和argmax求众数

arr = np.random.randint(1, 10, (10,))
print(arr)
print(np.median(arr)) # 求中位数
tmp = np.bincount(arr)
print(np.argmax(tmp)) # [0 1 0 1 4 2 0 0 1 1] 每个数据出现的次数统计

求任意分位数(也叫分为点)

import numpy as np
arr = np.random.randint(1, 10, (15,))
print(np.median(arr))
print(np.sort(arr)) # 分位数肯定是先sort之后的值
print(‘*’ * 30)
print(np.percentile(arr, q=50)) # np.percentile(arr, q=50) == np.median(arr)
print(np.percentile(arr, q=[1, 25, 50, 75, 100])) # 求一组分位数

求相关系数,是研究变量之间线性相关程度的量;

import numpy as np
arr = np.array([[1, 2], [2, 3.8]]) # 线性相关性
print(arr)
print(np.corrcoef(arr[:, 0], arr[:, 1])) # 考靠负

找到NumPy中缺失值

import numpy as np

np.nan # nan not number

arr = np.array([0., 1., np.nan,
3., np.nan, np.nan, 6., 7., 8., 9.])

用isnan和where两个函数,可以定位哪个位置是空值,通过where查看哪些位置

print(np.where(np.isnan(arr)))

缺失值默认填0

import numpy as np
arr = np.array([[0., np.nan, 2., 3.],
[4., 5., np.nan, 7.],
[8., 9., 10., 11.],
[12., 13., np.nan, 15.],
[16., 17., np.nan, 19.],
[20., 21., 22., 23.]])

print(np.where(np.isnan(arr)))
arr[np.isnan(arr)] = 0 # ~np.isnan(arr),取反就是不为0的
print(arr)

返回无缺失的行

import numpy as np

arr = np.array([[0., np.nan, 2., 3.],
[4., 5., np.nan, 7.],
[8., 9., 10., 11.],
[12., 13., np.nan, 15.],
[16., 17., np.nan, 19.],
[20., 21., 22., 23.]])

返回有缺失值的行

m = np.sum(np.isnan(arr), axis=1) == 0
print(arr[m])

求softmax得分值

import numpy as np
arr = np.array([1, 3, 2, 4])
print(arr)
def softmax(a):
e_a = np.exp(a - np.max(a))
return e_a / np.sum(e_a)
np.set_printoptions(precision=3)
sf = softmax(arr)
print(sf)

相关文章:

numpy学习总结二

单词发音: squeeze 发音:死贵子 concatenation [kɒnˌktəˈneɪʃən] 拼接;串联 threshold [θreʃhəʊld] 死re后的 quantile 拷n太哦 分位数 因果不能改 智慧不能赐 正法不可说 无缘不能度 天雨虽宽不润无根之草;佛法虽广不度无缘之人 …...

3 编辑器(Vim)

1.完成 vimtutor。备注:它在一个 80x24(80 列,24 行) 终端窗口看起来效果最好。 2.下载我们提供的 vimrc,然后把它保存到 ~/.vimrc。 通读这个注释详细的文件 (用 Vim!), 然后观察 …...

C/C++ (stdio.h)标准库详解

cstdio,在C语言中称为stdio.h。该库使用所谓的流与物理设备(如键盘、打印机、终端)或系统支持的任何其他类型的文件一起操作。 在本文将会通过介绍函数参数,举出实际的简单例子来帮助大家快速上手使用函数。 目录 一、流 二、库函数 1、F…...

深度学习介绍

对于具备完善业务逻辑的任务,大多数情况下,正常的人都可以给出一个符合业务逻辑的应用程序。但是对于一些包含超过人类所能考虑到的逻辑的任务,例如面对如下任务: 编写一个应用程序,接受地理信息、卫星图像和一些历史…...

ywtool dhcp命令

一.dhcp功能介绍 就是通过脚本实现dhcp地址池的增、删、改、查这几个功能日志文件路径: /var/log/ywtools/ywtool-dhcp.log/usr/local/ywtools/config/config.ini中account参数(ywtool dhcp这个命令用的,但是这个命令只能配置1个地址池,所以这里面的参数没什么意义) 二.配置…...

ChatGPT高效提问—基础知识(LM、PLM以及LLM)

ChatGPT高效提问—基础知识(LM、PLM以及LLM) ​ 了解语言模型(language model, LM)、预训练语言模型(pre-trained language model, PLM)和大型语言模型(large language model, LLM)…...

MongoDB复制集实战及原理分析

文章目录 MongoDB复制集复制集架构三节点复制集模式PSS模式(官方推荐模式)PSA模式 典型三节点复制集环境搭建复制集注意事项环境准备配置复制集复制集状态查询使用mtools创建复制集安全认证复制集连接方式 复制集成员角色属性一:Priority 0属…...

Java并发之synchronized详解

☆* o(≧▽≦)o *☆嗨~我是小奥🍹 📄📄📄个人博客:小奥的博客 📄📄📄CSDN:个人CSDN 📙📙📙Github:传送门 📅&a…...

Flask 项目自动生成 API 文档的高效实践

Flasgger,作为一款强大的 Flask 扩展,自动从 Flask 应用中提取并生成 OpenAPI 规范文档,配备 SwaggerUI,为开发者提供了一条快捷通道,让 API 的文档编制和交互式测试变得简单易行。Flasgger 的设计原则是简化开发流程&…...

WebChat——一个开源的聊天应用

Web Chat 是开源的聊天系统,支持一键免费部署私人Chat网页的应用程序。 开源地址:https://github.com/loks666/webchat 目录树 TOC 👋🏻 开始使用 & 交流🛳 开箱即用 A 使用 Docker 部署B 使用 Docker-compose…...

【Linux系统 01】Vim工具

目录 一、Vim概述 1. 文件打开方式 2. 模式切换 二、命令模式 1. 移动与跳转 2. 复制与粘贴 3. 剪切与撤销 三、编辑模式 1. 插入 2. 替换 四、末行模式 1. 保存与退出 2. 查找与替换 3. 分屏显示 4. 命令执行 一、Vim概述 1. 文件打开方式 vim 文件路径&#…...

Oracle 面试题 | 09.精选Oracle高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

基于Springboot的校园失物招领网站(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园失物招领网站(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…...

WPF布局面板

StackPanel StackPanel 是一种常用的布局控件,可以支持水平或垂直排列,但不会换行。当子元素添加到 StackPanel 中时,它们将按照添加的顺序依次排列。默认情况下,StackPanel 的排列方向是垂直的,即子元素将从上到下依次排列。可以使用 Orientation 属性更改排列方向。可以…...

灵活应对:策略模式在软件设计中的应用

策略模式是一种行为型设计模式,它允许定义一系列算法,并将每个算法封装起来,使它们可以互换使用。策略模式让算法的变化独立于使用算法的客户端,使得在不修改原有代码的情况下切换或扩展新的算法成为可能。 使用策略模式的场景包…...

eosio.token 智能合约介绍

一、目的 eosio.token系统合约定义了允许用户为基于EOSIO的区块链创建、发行和管理代币的结构和操作,它演示了一种实现允许创建和管理代币的智能合约的方法。本文详细介绍了eosio.token系统合约并在本地测试链上实际发行了代币进行演示,适用于EOS智能合…...

3D 转换

1,3D的特点: 近小远大 物体后面遮挡不可见 2,3D移动 translate3d 3D移动在2D移动的基础上多加了一个可以移动的方向,就是z轴方向 transform:translateX(100px):仅仅是在x轴上移动…...

AI智能语音机器人安装方法

销售型的企业,基本靠电话营销拓客来实现效益的最大化。因为电销人员离职率高,且需求量大,需要接连不断的招人来实现业绩目标,电话机器人,贴牌招商,复制多个账户 这些都意味的企业的投入成本越来越大,博主从事多年AI技术…...

Python 潮流周刊#38:Django + Next.js 构建全栈项目

△△请给“Python猫”加星标 ,以免错过文章推送 你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。本周刊开源,欢迎投稿[1]。另有电报频道[2]作为副刊,补充发布更加丰富的资讯,…...

Jenkins升级后,构建任务配置界面重复错位

最近我把公司的Jenkins服务升级到了最新版本,升级完成后,点了一下构建任务,发现能够构建成功,就以为顺利完成升级了,下班走了,结果第二天,进入构建任务配置界面发现,界面一团乱麻&am…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

深度学习习题2

1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...

麒麟系统使用-进行.NET开发

文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的,如果需要进行.NET开发,则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET,所以要进…...