NumPy 快速入门

1、Numpy介绍

NumPy是Python语言的一个扩充程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,其运行效率几乎都可以与编译过的等效C语言代码一样快。

2、创建数组

数组和列表的区别,列表可以存储任一类型的数据,而数组只能存储一种类型的数据

>>> import numpy as np
>>> x = np.array([1,2,3])
>>> x
array([1, 2, 3])
>>> type(x)


#生成一维数组,默认值为0,类型为float
>>> a = np.zeros(10,dtype=int)
>>> a
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
#查看数组类型
>>> a.dtype
dtype('int32')

#生成多维数组,默认值为1,类型为float
>>> np.ones((3,3),dtype=float)
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])

#指定默认值
>>> np.full((2,3),3.14)
array([[ 3.14,  3.14,  3.14],
       [ 3.14,  3.14,  3.14]])

#随机默认值
>>> np.random.random((3,3))
array([[ 0.91593995,  0.60096071,  0.38946746],
       [ 0.31114094,  0.20312764,  0.41675188],
       [ 0.34502694,  0.80952597,  0.52391742]])
>>> np.random.randint(0,10,(3,3))
array([[9, 0, 5],
       [8, 2, 4],
       [8, 9, 5]])

#返回ndarray对象,包含给定范围内的等间隔值
>>> np.arange(0,10,2)
array([0, 2, 4, 6, 8])

#此函数类似于arange()函数。 在此函数中,指定了范围之间的均匀间隔数量,而不是步长。
>>> np.linspace(0,3,10)
array([ 0.        ,  0.33333333,  0.66666667,  1.        ,  1.33333333,
        1.66666667,  2.        ,  2.33333333,  2.66666667,  3.        ])

#生成N维单位矩阵
>>> np.eye(3)
array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.]])

3、数组中的访问

>>> var = [[1,2,3],[3,4,5],[4,5,6]]
>>> var[0][0]
1
>>> a = np.array(var)
>>> a[-1][0]
4
>>> a
array([[1, 2, 3],
       [3, 4, 5],
       [4, 5, 6]])
>>> a[2,0]
4
>>> a[2][0]
4
>>> a[:2,:2]
array([[1, 2],
       [3, 4]])
>>> a[:2][:2]
array([[1, 2, 3],
       [3, 4, 5]])
>>> a[a>3]
array([4, 5, 4, 5, 6])

4、数组的一些属性

>>> a
array([[1, 2, 3],
       [3, 4, 5],
       [4, 5, 6]])
#ndim 返回数组的维数。
>>> print(a.ndim)
2
#shape 返回一个包含数组维度的元组,它也可以用于调整数组大小。
>>> print(a.shape)
(3, 3)
#size
>>> print(a.size)
9
#dtype 类型
>>> print(a.dtype)
int32
#itemsize 这一数组属性返回数组中每个元素的字节单位长度。
>>> print(a.itemsize)
4
#nbytes
>>> print(a.nbytes)
36

5、简单运算

>>> a = np.random.randint(0,10,(3,3))
>>> a
array([[6, 4, 5],
       [1, 9, 0],
       [8, 2, 4]])
>>> a+10
array([[16, 14, 15],
       [11, 19, 10],
       [18, 12, 14]])
>>> a-10
array([[ -4,  -6,  -5],
       [ -9,  -1, -10],
       [ -2,  -8,  -6]])
>>> a * 10
array([[60, 40, 50],
       [10, 90,  0],
       [80, 20, 40]])

#求和
>>> np.sum(a)
39
>>> np.sum(a,axis=1)
array([15, 10, 14])
>>> np.sum(a,axis=0)
array([15, 15,  9])

#排序
>>> a
array([[6, 4, 5],
       [1, 9, 0],
       [8, 2, 4]])
>>> np.sort(a,axis=0)
array([[1, 2, 0],
       [6, 4, 4],
       [8, 9, 5]])
>>> a.sort(axis=1)
>>> a
array([[4, 5, 6],
       [0, 1, 9],
       [2, 4, 8]])

notebook使用小技巧
%timeit 代码;此方法来判断程序的执行效率

n = np.random.rand(10000)
%timeit sum(n)
1.18 ms ± 2.36 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit np.sum(n)
6.33 µs ± 252 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
#ms 毫秒 µs 微秒 ns 纳秒    1毫秒 = 1,000 微秒   1微秒 = 1,000 纳秒

6、相关函数,备查

Numpy 数据类型对应的取值范围

参考链接

数据类型 描述
bool_ 存储为一个字节的布尔值(真或假)
int_ 默认整数,相当于 C 的long,通常为int32或int64
intc 相当于 C 的int,通常为int32或int64
intp 用于索引的整数,相当于 C 的size_t,通常为int32或int64
int8 字节(-128 ~ 127)
int16 16 位整数(-32768 ~ 32767)
int32 32 位整数(-2147483648 ~ 2147483647)
int64 64 位整数(-9223372036854775808 ~ 9223372036854775807)
uint8 8 位无符号整数(0 ~ 255)
uint16 16 位无符号整数(0 ~ 65535)
uint32 32 位无符号整数(0 ~ 4294967295)
uint64 64 位无符号整数(0 ~ 18446744073709551615)
float_ float64的简写
float16 半精度浮点:符号位,5 位指数,10 位尾数
float32 单精度浮点:符号位,8 位指数,23 位尾数
float64 双精度浮点:符号位,11 位指数,52 位尾数
complex_ complex128的简写
complex64 复数,由两个 32 位浮点表示(实部和虚部)
complex128 复数,由两个 64 位浮点表示(实部和虚部)

NumPy - 算数函数,NumPy 包含大量的各种数学运算功能。

函数名 描述
sin 正弦
cos 余弦
tan 正切
arcsin 反正弦
arccos 反余弦
arctan 反正切
around 返回四舍五入到所需精度的值
floor 返回不大于输入参数的最大整数,向下取整
ceil 函数返回输入值的上限,向上取整
reciprocal 返回参数逐元素的倒数
power 将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂
mod 返回输入数组中相应元素的除法余数

Numpy字符串函数

函数名 描述
add() 返回两个str或Unicode数组的逐个字符串连接
multiply() 返回按元素多重连接后的字符串
center() 返回给定字符串的副本,其中元素位于特定字符串的中央
capitalize() 返回给定字符串的副本,其中只有第一个字符串大写
title() 返回字符串或 Unicode 的按元素标题转换版本
lower() 返回一个数组,其元素转换为小写
upper() 返回一个数组,其元素转换为大写
split() 返回字符串中的单词列表,并使用分隔符来分割
splitlines() 返回元素中的行列表,以换行符分割
strip() 返回数组副本,其中元素移除了开头或者结尾处的特定字符
join() 返回一个字符串,它是序列中字符串的连接
replace() 返回字符串的副本,其中所有子字符串的出现位置都被新字符串取代
decode() 按元素调用str.decode
encode() 按元素调用str.encode

NumPy - 统计函数

函数名 描述
amin 从给定数组中的元素沿指定轴返回最小值
amax 从给定数组中的元素沿指定轴返回最大值
ptp 返回沿轴的值的范围(最大值 - 最小值)
percentile 百分位数是统计中使用的度量,表示小于这个值的观察值的百分比
median 中值定义为将数据样本的上半部分与下半部分分开的值
mean 算术平均值是沿轴的元素的总和除以元素的数量。 如果提供了轴,则沿其计算。
average 加权平均值是由每个分量乘以反映其重要性的因子得到的平均值。
std 标准差是与均值的偏差的平方的平均值的平方根。 标准差公式如下:std = sqrt(mean((x - x.mean())**2))
var 方差是偏差的平方的平均值,即mean((x - x.mean())** 2)。 换句话说,标准差是方差的平方根。

NumPy - 排序、搜索和计数函数

函数名 描述
sort 返回输入数组的排序副本
argsort 对输入数组沿给定轴执行间接排序,并使用指定排序类型返回数据的索引数组。
lexsort 函数使用键序列执行间接排序。 键可以看作是电子表格中的一列。 该函数返回一个索引数组,使用它可以获得排序数据
argmax 分别沿给定轴返回最大元素的索引
argmin 分别沿给定轴返回最小元素的索引
nonzero 返回输入数组中非零元素的索引
where 返回输入数组中满足给定条件的元素的索引
extract 返回满足任何条件的元素

NumPy 包含numpy.linalg模块,提供线性代数所需的所有功能。

函数名 描述
dot 两个数组的点积
vdot 两个向量的点积
inner 两个数组的内积
matmul 两个数组的矩阵积
determinant 数组的行列式
solve 求解线性矩阵方程
inv 寻找矩阵的乘法逆矩阵

你可能感兴趣的:(NumPy 快速入门)