目录
[一、先从 "字符串" 下手:原来 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]
,mean
是70.33
,median
是66
,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 时遇到过什么坑?评论区聊聊呀!