PyCharm 在手,NumPy 函数实操笔记:从字符串到统计分析,一篇搞懂

目录

[一、先从 "字符串" 下手:原来 NumPy 处理文本这么方便](#一、先从 "字符串" 下手:原来 NumPy 处理文本这么方便)

[二、数学运算:从三角函数到取整,PyCharm 里算得又快又准](#二、数学运算:从三角函数到取整,PyCharm 里算得又快又准)

[三、统计分析才是重头戏:这些函数能解决 80% 的数据分析问题](#三、统计分析才是重头戏:这些函数能解决 80% 的数据分析问题)

[四、踩过的坑:这些细节在 PyCharm 里试了才知道](#四、踩过的坑:这些细节在 PyCharm 里试了才知道)

五、学以致用:用今天学的函数解决课堂练习

[六、最后碎碎念:PyCharm 真的是学习利器](#六、最后碎碎念:PyCharm 真的是学习利器)


今天的数据分析课上,老师把 NumPy 的核心函数过了一遍,一开始看着满屏的函数名头都大了 ------ 又是字符串处理,又是数学运算,还有统计、排序... 不过拿着 PyCharm 一个个敲代码试下来,居然慢慢理清了头绪。这篇笔记就聊聊我今天学的重点,全是实操里总结的干货,新手友好,老手可查漏~

一、先从 "字符串" 下手:原来 NumPy 处理文本这么方便

刚开始以为 NumPy 只擅长算数字,没想到处理字符串也有一手。老师讲了一堆函数,我在 PyCharm 里试了几个最常用的,分享给你们:

比如np.char.add(),看起来简单,其实超实用 ------ 它能把两个字符串数组 "对应着拼接"。我试了句np.char.add(['hello', 'hi'], [' sun', ' zhang']),直接得到['hello sun' 'hi zhang'],比用 Python 循环拼接快多了,尤其数据量大的时候。

还有np.char.multiply(),这函数有点 "魔性"------np.char.multiply('good', 3)会返回'goodgoodgood',感觉做重复文本生成时能用到,比如批量生成重复的提示语。

最让我惊喜的是lower()upper(),处理大小写转换比 Python 原生函数爽。试了下np.char.lower(['NICE', 'GOOD']),直接转成['nice' 'good'],数组里的元素一键批量处理,PyCharm 里运行结果秒出,不用一个个遍历,太省事儿了。

不过踩了个小坑:encode()decode()要注意编码格式。我用cp500编码后,试着用utf-8解码,直接报了UnicodeDecodeError(PyCharm 的红色报错超显眼)。后来才明白,编码和解码得用同一个格式,这细节得记牢。

二、数学运算:从三角函数到取整,PyCharm 里算得又快又准

数学课上的三角函数,NumPy 里居然直接能算!老师说不用死记公式,用np.sin()np.cos()就行,但得先把角度转成弧度(乘以np.pi/180)。我在 PyCharm 里敲了组角度[0, 30, 90],算出来的正弦值和课本上的一模一样,比手算靠谱多了。

取整函数里,np.around()np.floor()np.ceil()这三个得拎出来说:

  • around(5.55, decimals=1)会四舍五入到一位小数,得5.6

  • floor(-1.7)是 "向下取整",结果-2.0(别和 Python 的int()搞混,这个更严格);

  • ceil(0.6)则是 "向上取整",返回1.0

在 PyCharm 里改改参数跑一遍,这三个函数的区别立马就清楚了。

三、统计分析才是重头戏:这些函数能解决 80% 的数据分析问题

这部分是今天的重点,老师说 "学会这些,以后算成绩、做调查分析都用得上"。我结合课堂练习里的 "成绩表" 试了试,果然香:

np.mean()np.median()必须放一起说 ------ 算平均分用mean,算中位数用median。比如三个同学的数学成绩[80, 65, 66]mean70.33median66,PyCharm 里输np.mean(成绩数组)一秒出结果,比 Excel 点鼠标快多了。

还有np.amax()np.amin(),找最大值最小值用它们准没错。算成绩时,我用np.amax(成绩表, axis=1)直接找出每个同学的最高分(axis=1 是按行算),axis=0则能算出每科的最高分,简直是为表格数据量身定做的。

哦对了,np.ptp()这个函数有点冷门但实用 它能直接算出 "最大值减最小值"。比如np.ptp([10, 20, 30])返回20,相当于快速看一组数据的 "波动范围",比自己写max()-min()省代码。

四、踩过的坑:这些细节在 PyCharm 里试了才知道

今天实操时踩了两个小坑,记下来给你们避坑:

1、用inplace=True要谨慎:之前学 Pandas 时习惯用inplace,但 NumPy 里很多函数不需要 ------ 比如np.sort()直接返回排序后的数组,不用纠结 "改不改原数组",PyCharm 里打印一下就知道结果。

2、轴参数axis别搞反:算行还是列?记住axis=0是 "沿着列"(比如算每科平均分),axis=1是 "沿着行"(比如算每个同学的平均分)。我一开始搞反了,在 PyCharm 里把数组打印出来,对着结果一看就明白了。

五、学以致用:用今天学的函数解决课堂练习

最后老师留了道 "成绩计算" 题,正好用上今天的知识点:

给了三个同学的语文、数学、英语成绩(含考试和平时成绩),要求算 "最终成绩"(考试 60%+ 平时 40%),还要算每个人的平均分、每科最高分。

我用np.mean()算平均分,np.amax()找最高分,甚至用np.around()把结果四舍五入到小数点后两位 ------ 全程在 PyCharm 里调试,改一行代码跑一次,很快就出结果了。原来这些函数放一起用,能解决这么具体的问题,瞬间觉得今天的课没白听~

六、最后碎碎念:PyCharm 真的是学习利器

以前用记事本写代码,错了都不知道哪错。今天用 PyCharm,函数名敲一半就有提示,报错了直接标红,甚至会建议怎么改(比如我把np.char.add写成np.add,它直接提示 "是不是要调用字符串函数")。新手学 NumPy,强烈建议用它,省不少时间。

今天的知识点就这些,不算全,但都是我觉得最实用的。明天打算再试试排序和搜索函数,有新发现再更~你们学 NumPy 时遇到过什么坑?评论区聊聊呀!

相关推荐
optimistic_chen15 分钟前
【Java EE进阶 --- SpringBoot】Mybatis - plus 操作数据库
数据库·spring boot·笔记·java-ee·mybatis·mybatis-plus
凉、介33 分钟前
ARM 总线技术 —— AMBA 入门
arm开发·笔记·学习
日更嵌入式的打工仔1 小时前
嵌入式入门:APP+BSP+HAL 三层分级架构浅析
笔记·单片机·嵌入式硬件·学习
长桥夜波1 小时前
【第十八周】机器学习笔记07
人工智能·笔记·机器学习
摇滚侠1 小时前
Spring Boot 3零基础教程,yml文件中配置和类的属性绑定,笔记15
spring boot·redis·笔记
摇滚侠2 小时前
Spring Boot 3零基础教程,WEB 开发 HTTP 缓存机制 笔记29
spring boot·笔记·缓存
大白的编程日记.2 小时前
【Linux学习笔记】线程同步与互斥之生产者消费者模型
linux·笔记·学习
新子y2 小时前
【小白笔记】strip的含义
笔记·python
摇滚侠2 小时前
Spring Boot 3零基础教程,WEB 开发 内容协商 接口返回 YAML 格式的数据 笔记35
spring boot·笔记·后端
Chunyyyen3 小时前
【第十八周】自然语言处理的学习笔记03
笔记·学习·自然语言处理