【Python学习笔记】20:numpy广播、分段函数、频次统计

2023-12-09 15:18

本文主要是介绍【Python学习笔记】20:numpy广播、分段函数、频次统计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用int64()取整

>>> x=np.random.rand(10)*50
>>> x
array([ 23.22184111,  32.50075356,  42.89971884,  29.7081743 ,9.59936762,  13.48713739,  31.01003042,   9.83144093,32.46756683,  32.90776814])
>>> np.int64(x) #取整(不作四舍五入)
array([23, 32, 42, 29,  9, 13, 31,  9, 32, 32], dtype=int64)
>>> x-np.int64(x) #取小数部分
array([ 0.22184111,  0.50075356,  0.89971884,  0.7081743 ,  0.59936762,0.48713739,  0.01003042,  0.83144093,  0.46756683,  0.90776814])

广播运算

>>> a=np.arange(0,60,10).reshape(-1,1) #多行1列的数组作列向量
>>> b=np.arange(0,6) #行向量
>>> a
array([[ 0],[10],[20],[30],[40],[50]])
>>> b
array([0, 1, 2, 3, 4, 5])
>>> a[1]+b #数组与标量的加法
array([10, 11, 12, 13, 14, 15])
>>> a+b #广播运算,a的每行都做上面的运算
array([[ 0,  1,  2,  3,  4,  5],[10, 11, 12, 13, 14, 15],[20, 21, 22, 23, 24, 25],[30, 31, 32, 33, 34, 35],[40, 41, 42, 43, 44, 45],[50, 51, 52, 53, 54, 55]])
>>> a*b #广播运算,a的每行都和b数组相乘
array([[  0,   0,   0,   0,   0,   0],[  0,  10,  20,  30,  40,  50],[  0,  20,  40,  60,  80, 100],[  0,  30,  60,  90, 120, 150],[  0,  40,  80, 120, 160, 200],[  0,  50, 100, 150, 200, 250]])

分段函数

>>> x=np.random.randint(0,10,size=(1,10))
>>> x
array([[2, 6, 4, 1, 6, 8, 1, 6, 3, 4]])
>>> np.where(x<5,0,1) #小于5的元素变成0,大于5的变成1
array([[0, 1, 0, 0, 1, 1, 0, 1, 0, 0]])
>>> np.piecewise(x,[x<4,x>7],[lambda x:x*2,lambda x:x*3])
array([[ 4,  0,  0,  2,  0, 24,  2,  0,  6,  0]])

np.piecewise()接收的后两个参数list中,将第一个list中的每个条件作后面那个list对应的下标中的函数运算,对于list中没有出现的那部分,把它们都变成0。

计数

>>> x=np.random.randint(0,10,7)
>>> x
array([1, 0, 3, 0, 0, 3, 0])
>>> np.bincount(x) #计数
array([4, 1, 0, 2], dtype=int64)
>>> np.sum(_) #所有元素出现次数之和等于数组长度
7
>>> np.unique(x) #返回x中的唯一元素值
array([0, 1, 3])

np.bincount()返回传入的数组中0到最大数之间可能有多少个数的长度的新数组,并在每个下标处统计那个可能出现的数出现了多少次。

如上面的例子中,x中最大为3,那么返回的就是长度为4的数组,0出现了4次,1出现了1次,2出现了0次,3出现了2次。

显然,这样得到的数组中所有数字之和也就是原来那个数组中有重复地出现了多少个数,也就是原数组的长度。

>>> x=np.random.randint(0,10,10)
>>> x
array([3, 6, 3, 5, 2, 4, 2, 1, 4, 8])
>>> y=np.random.rand(10) #随机小数,模拟权重
>>> y=np.round_(y,1) #四舍五入保留1位小数
>>> y
array([ 0.8,  0.1,  0. ,  0.4,  0.1,  0.1,  0.5,  0. ,  0.3,  0. ])
>>> np.sum(x*y)/len(x) #加权总和/出现总次数
0.78000000000000003

因为numpy数组支持内置函数len,所以没有去使用bincount计数再加再一起,实际上numpy数组也支持内置函数sum的,所以下面这样也是可以的。

>>> sum(x*y)/len(x)
0.78000000000000003

 

这篇关于【Python学习笔记】20:numpy广播、分段函数、频次统计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/474163

相关文章

基于Python编写一个git自动上传的脚本(打包成exe)

《基于Python编写一个git自动上传的脚本(打包成exe)》这篇文章主要为大家详细介绍了如何基于Python编写一个git自动上传的脚本并打包成exe,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录前言效果如下源码实现利用pyinstaller打包成exe利用ResourceHacker修改e

Python在二进制文件中进行数据搜索的实战指南

《Python在二进制文件中进行数据搜索的实战指南》在二进制文件中搜索特定数据是编程中常见的任务,尤其在日志分析、程序调试和二进制数据处理中尤为重要,下面我们就来看看如何使用Python实现这一功能吧... 目录简介1. 二进制文件搜索概述2. python二进制模式文件读取(rb)2.1 二进制模式与文本

Python中Tkinter GUI编程详细教程

《Python中TkinterGUI编程详细教程》Tkinter作为Python编程语言中构建GUI的一个重要组件,其教程对于任何希望将Python应用到实际编程中的开发者来说都是宝贵的资源,这篇文... 目录前言1. Tkinter 简介2. 第一个 Tkinter 程序3. 窗口和基础组件3.1 创建窗

Django调用外部Python程序的完整项目实战

《Django调用外部Python程序的完整项目实战》Django是一个强大的PythonWeb框架,它的设计理念简洁优雅,:本文主要介绍Django调用外部Python程序的完整项目实战,文中通... 目录一、为什么 Django 需要调用外部 python 程序二、三种常见的调用方式方式 1:直接 im

Python字符串处理方法超全攻略

《Python字符串处理方法超全攻略》字符串可以看作多个字符的按照先后顺序组合,相当于就是序列结构,意味着可以对它进行遍历、切片,:本文主要介绍Python字符串处理方法的相关资料,文中通过代码介... 目录一、基础知识:字符串的“不可变”特性与创建方式二、常用操作:80%场景的“万能工具箱”三、格式化方法

Mybatis对MySQL if 函数的不支持问题解读

《Mybatis对MySQLif函数的不支持问题解读》接手项目后,为了实现多租户功能,引入了Mybatis-plus,发现之前运行正常的SQL语句报错,原因是Mybatis不支持MySQL的if函... 目录MyBATis对mysql if 函数的不支持问题描述经过查询网上搜索资料找到原因解决方案总结Myb

浅析python如何去掉字符串中最后一个字符

《浅析python如何去掉字符串中最后一个字符》在Python中,字符串是不可变对象,因此无法直接修改原字符串,但可以通过生成新字符串的方式去掉最后一个字符,本文整理了三种高效方法,希望对大家有所帮助... 目录方法1:切片操作(最推荐)方法2:长度计算索引方法3:拼接剩余字符(不推荐,仅作演示)关键注意事

python版本切换工具pyenv的安装及用法

《python版本切换工具pyenv的安装及用法》Pyenv是管理Python版本的最佳工具之一,特别适合开发者和需要切换多个Python版本的用户,:本文主要介绍python版本切换工具pyen... 目录Pyenv 是什么?安装 Pyenv(MACOS)使用 Homebrew:配置 shell(zsh

Python自动化提取多个Word文档的文本

《Python自动化提取多个Word文档的文本》在日常工作和学习中,我们经常需要处理大量的Word文档,本文将深入探讨如何利用Python批量提取Word文档中的文本内容,帮助你解放生产力,感兴趣的小... 目录为什么需要批量提取Word文档文本批量提取Word文本的核心技术与工具安装 Spire.Doc

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req