![715ac028d7a9a2f2506eb50e627ec6a2.png](https://i-blog.csdnimg.cn/blog_migrate/7cdc53f918ccff433fcefd1c66e7bae0.jpeg)
前言
想了解 Numpy 的人基本上都是要和数据打交道的,Numpy对数据操作的方法多,底层也是使用 C 实现的,也就是说Numpy处理数据的速度是比较快的,这也体现了 Python 胶水语言的特性。Numpy 也被称为机器学习三剑客之一,另外的就是 Pandas 和 Matplotlib 了,虽然当前有诸如 scikit-learn 机器学习包以及 Pytorch、TensorFlow 深度学习框架,这些包和框架都少不了对数据的操作,当然也少不了对数据进行预处理,这些包和框架也支持与 Numpy 中的数据格式(ndarray)进行交互,所以我认为学好 Numpy 的操作也有利于更深入地了解一些高级的包和框架的使用。
对于 Numpy 来说,官方文档内容相当多,并且是英文的,难道我们需要全部学习一遍吗?我想,如果经常在数据处理领域中摸爬滚打的话,是需要的,但是我也相信二八定理,我们经常使用的也就是 Numpy 中的 20%左右,至于剩下的内容,需要我们在业余时间补回来,在需要的时候能够快速想起来,不需要做的特别熟练,如果特别熟练就更好了。下面的内容是自己总结的,方便自己看,也希望方便大家看。
程序运行环境:window10 Python3.7 (Anaconda) Numpy 1.18.1
文档参考:官方文档[1],中文文档[2]
1 安装与导入
如果安装了 Anaconda,就不需要再安装Numpy了,在安装 Anaconda 的时候就安装了 Numpy 及其相关的包。当然你可以使用如下命令安装:
conda install numpy
或者:
pip install numpy
在 Python 编程社区中,大家会对经常使用的包设置一个都比较认可的别名,Numpy 的别名是 np,使用别名编程也更加简洁,实际编程导入如下:
import
当然,你也可以自定义别名,但是为了使得代码更具可读性可交流性,最好还是使用大家比较认可的别名。
先了解一下 Numpy 中的数据类型:
array
即使 Numpy 中只有一个元素,其也是 ndarray 的数据类型。其实也可理解普通的 number(int, float)类型可看为是标量,而 ndarray 数据类型是数组、向量或矩阵。
2 创建 ndarray 类型数据及相关信息
通常,可以从 list 类型的数据进行创建,也可以从 pandas 中 dataframe 类型中获取,生成一个 array,注:一个 ndarray数据类型都是相同的(底层 c 语言处理,速度快),否则会按照 int->float(np.float)->str(object)进行类型转换。
array1 = np.array([[1,2,3],
[4,5,6],
[7,8,9]]) # 使用一个二维的list生成一个二维的ndarray
array2 = np.array([10, 11, 12, 13]) # 创建一个1维的ndarray
2.1 常用属性
查看数组的形状,在矩阵计算时,数据的维度要满足矩阵计算要求。
print(array1.shape, array2.shape) # 返回元组类型 (3, 3) (4,)
查看数组的维度,
print(array1.ndim, array2.ndim) # 2 1
查看元素的数据类型,需要满足一定的精度
print(array1.dtype) # 默认为int32类型(根据机器决定)
查看数组中共有多少个数据,
print(array1.size) # 9
补充: 在创建 ndarray 的时候,可以选择使用什么样的数据类型,如使用 float 类型:
array3 = np.array([1, 3, 5], dtype=np.float)
print(array3.dtype) # float64
2.2 创建特殊类型的 ndarray
在进行矩阵计算时,可以快速创建如全 0 矩阵,单位矩阵,全 1 矩阵,并指定对应的维度等。
在一定范围内创建等间隔的 ndarray,该方法类型与 Python 中的 range 函数相似,但更强大。
array = np.arange(10, 15, 0.5, dtype=np.float)
print(array) # [10. 10.5 11. 11.5 12. 12.5 13. 13.5 14. 14.5]
<