Numpy学习笔记
1、创建数组
直接创建数组
np.array([1,2,3,4])
创建指定形状和内容的数组
numpy.zeros(shape, dtype = float, order = 'C')
numpy.ones(shape, dtype = float, order = 'C')
numpy.empty(shape, dtype = float, order = 'C')
参数 | 描述 |
---|---|
shape | 数组形状 |
dtype | 数据类型(可选) |
order | 可选,有"C"和"F"两个选项,分别代表行优先和列优先,在计算机内存中的存储元素的顺序 |
从数值范围创建数组
numpy.arange(start, stop, step, dtype)
参数 | 描述 |
---|---|
start | 起始值(默认0) |
stop | 终止值(不包含,即左闭右开) |
step | 步长(默认1) |
dtype | 数据类型(默认float64) |
# 用于创建一个一维数组,数组是一个等差数列构成的
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
参数 | 描述 |
---|---|
start | 序列起始值 |
stop | 序列的终止值,如果endpoint为true,该值包含于数列中 |
num | 要生成的等步长的样本数量,默认为50 |
endpoint | 该值为 true 时,数列中包含stop值,反之不包含,默认是True |
retstep | 如果为 True 时,生成的数组中会显示间距,反之不显示 |
dtype | 数据类型 |
# 用于创建一个于等比数列
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
参数 | 描述 |
---|---|
start | 序列起始值(参数base的幂次) |
stop | 序列的终止值(参数base的幂次),如果endpoint为true,该值包含于数列中 |
num | 要生成的等步长的样本数量,默认为50 |
endpoint | 该值为 true 时,数列中包含stop值,反之不包含,默认是True |
base | 对数 log 的底数 |
dtype | 数据类型 |
例子:
import numpy as np
# 默认底数是 10
a = np.logspace(1.0, 2.0, num = 10)
print (a)
输出:
[ 1. 2. 4. 8. 16. 32. 64. 128. 256. 512.]
从已有数组创建数组
numpy.asarray(a, dtype = None, order = None)
参数 | 描述 |
---|---|
a | 任意形式的输入参数,如列表、元组, 元组的元组, 元组的列表,多维数组 |
dtype | 数据类型 |
order | 可选,有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序 |
2、数组索引和切片
数组的索引
简单的索引:
a[0,1]
按条件筛选元素
a[a < 3]
a[(a > 3) & (a % 2 == 0)] # 筛选出大于3且为偶数的元素
使用 slice 函数实现切片
数组的切片操作与 Python 中 list 的切片操作一样,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。
import numpy as np
a = np.arange(10)
s = slice(2,7,2) # 从索引 2 开始到索引 7 停止,间隔为2
print (a[s])
输出:
[2 4 6]
使用冒号实现切片
通过冒号分隔切片参数 start:stop:step 来进行切片操作
import numpy as np
a = np.arange(10)
b = a[2:7:2] # 从索引 2 开始到索引 7 停止,间隔为 2
print(b)
输出:
[2 4 6]
冒号的解释:如果只放置一个参数,如[2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [2:7],那么则提取两个索引(左闭右开)之间的项。
# 获取第1行,0到2列的元素(不包括2)
a[0, 0:2]
# 获取第1行所有元素
a[0, :]
a[0]
实现有跨度的切片操作:
a = np.array([1,2,3,4,5,6,7,8,9])
# 索引从0到9,每隔两个数取一个数
a[0:9:2]
输出:
array([1,3,5,7,9])
跨度可以为负数(逆向):
a = np.array([1,2,3,4,5,6,7,8,9])
a[4:1:-2]
# 将数组反向
a[::-1]
3、数组运算
乘法运算
点乘:
a = np.array([1,2,3])
b = np.array([4,5,6])
np.dot(a,b)
输出:
32
矩阵乘法:
@ 运算符等同与 np.matmul() 函数
a = np.array([[1,2],[3,4]])
b = np.array([[2,0],[0,2]])
a@b
输出:
array([[2,4][6,8]])
其他运算
如:sqrt(), sin(), cos(), log(), power()等
4、数组统计函数
返回数组中最小、最大元素:
a.min()
a.max()
返回数组中最小、最大元素的索引:
a.argmin()
a.argmax()
返回所有元素的和、平均值、中位数、方差、标准差
a.sum()
a.mean()
np.median(a)
a.var()
a.std()
对于以上函数,如果数组是多维数组,可指定额外参数 axis,axis为不同的值(如0和1)分别代表在指定的维度上进行运算。