这样学 2 天搞定 NumPy !

Python与算法社区

共 1274字,需浏览 3分钟

 · 2020-11-12

Python与算法社区
已原创430篇,干货满满
值得星标


01

02

03


三步加星标



NumPy系列已推送以下三篇:

图解入门 NumPy,来了!

介绍 NumPy 的五种玩法

NumPy 100 道练习题,原版 PDF


今天是施工专题NumPy部分最后一篇,一起重温NumPy中一些有趣且重要的特性。NumPy 最核心的一个对象:ndarray,封装的多维数组,除了存储数据本身外,还会记录元素类型即 dtype,且每个元素占用内存大小都均匀相等,如下创建 8 个 int64 型整数,计算总字节数的方法:


import numpy as np

a = np.arange(8).reshape(2,4)
a
array([[0123],
       [4567]])

# 计算占用占用的字节数
a.size * a.itemsize
64


数据分析工作,NumPy二维数组用的多;数据挖掘的话,高维数组用的就会更多,NumPy的强项正在于此,正所谓Python没有的NumPy有,Python有的NumPy更强。如下,创建同样shape的随机数组,Python要比NumPy慢232倍:


In[5]: %timeit np.random.randint(1,1000,(100,1000))
332 µs ± 2.39 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
]


In[6]: import random

In[6]: %timeit [random.randint(1,100for _ in range(100for _ in range(1000)] 
77.2 ms ± 315 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

# 创建同样的(100,1000)的随机数组
# Python原生是NumPy计算耗时的232倍
In[7]: 77.2 * 1000 / 332 
232.53012048192772


NumPy 闪电处理速度,主要得益于操作直接发生在元素级,而 Python 会创建更多其他额外对象,数据处理性能上无法与NumPy相媲美。


正无穷在NumPy中是 np.inf,空值是 np.nan ,它们都是一个类对象。


更多知识,比如数据类型 int63, float32,...,astype类型转化,reshape函数,数组扁平操作ravel, flatten,切片和索引,按照向量的加减乘除,统计函数,等等


这本《NumPy 100页精华》PDF,拿出两三天时间,敲一遍,基本就算掌握NumPy了,需要的微信我,备注:精华


不必打赏
给我点个赞
就心满意足了
浏览 22
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报