numpy基础知识归纳
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:
- 一个强大的N维数组对象 ndarray
- 广播功能函数
- 整合 C/C++/Fortran 代码的工具
- 线性代数、傅里叶变换、随机数生成等功能
numpy 的属性:
- ndim:维度
- shape:行数和列数
- size:元素个数
Numpy 的创建 array
- array:创建数组
- dtype:指定数据类型
- zeros:创建数据全为0
- ones:创建数据全为1
- empty:创建数据接近0
- arrange:按指定范围创建数据
- linspace:创建线段
`
创建一个数组
a = np.array([1,26,8]) # list 1d
print(a)
[1 26 8]
指定数据 dtype
a = np.array([1,26,8],dtype=np.int32)
print(a.dtype)
int32
`
Numpy 基础运算 (讲两种)
算术运算符
`
a = np.arange(0,5)
array([0, 1, 2, 3, 4])
a+4
array([4, 5, 6, 7, 8])
`
最简单的就是给数组加上一个标量,然后每个都元素都加上这个标量,当然也可以减乘除。
这些运算符还可以用于两个数组的运算。在numpy中这些运算符是元素级的,即只用于位置相同的元素。
此外,这些运算符还适用于返回值为numpy数值的函数
聚合函数
聚合函数是指对一组值(比如一个数组)进行操作,返回一个单一值作为结果的函数。比如求数组所有元素之和就是聚合函数。
a
array([1, 2, 3, 4, 5])
a.sum()
15
Numpy array 合并
Python中numpy数组的合并有很多方法,如
- np.append()
- np.concatenate()
- np.stack()
- np.hstack()
- np.vstack()
- np.dstack()
其中最泛用的是第一个和第二个。第一个可读性好,比较灵活,但是占内存大。第二个则没有内存占用大的问题。
Numpy array 分割
分割方法有:
- 水平分割
- 垂直分割
- 深度分割
水平分割
下面的代码将把数组沿着水平方向分割为3个相同大小的子数组:
b = hsplit(a,3) print(b)
得到结果为:
[array([[0], [3], [6]]), array([[1], [4], [7]]), array([[2], [5], [8]])]
垂直分割
下面的代码将把数组沿着垂直方向分割为3个相同大小的子数组:
b = vsplit(a,3) print(b)
得到结果为:
[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
深度分割
先创建一个三维数组:
a = arange(27).reshape(3,3,3) print(a)
调用dsplit函数按深度方向分割数组
b = dsplit(a,3) print(b)
得到结果
`
[array([[[ 0],
[ 3],
[ 6]],
[[ 9],
[12],
[15]],
[[18],
[21],
[24]]]),
array([[[ 1],
[ 4],
[ 7]],
[[10],
[13],
[16]],
[[19],
[22],
[25]]]),
array([[[ 2],
[ 5],
[ 8]],
[[11],
[14],
[17]],
[[20],
[23],
[26]]])]
`
Numpy copy & deep copy
简单了解
numpy关于copy有三种情况,完全不复制、视图(view)或者叫浅复制(shallow copy)和深复制(deep copy)。