创建数组:
np.array([1, 2, 3, 4, 5])
使用zeros创建全零数组:
np.zeros((3, 2))
代表一个三行二列的数组:
array([0., 0.],
[0., 0.],
[0., 0.])
获取数组的尺寸:
a = np.zeros((3, 2))
a.shape
#输出结果为:(3, 2)
第一个数据展示数组第一维的长度,第二个数据展示数组第二维的长度,以此类推
扩展-创建一个全都是1的数组:
np.ones((2, 4))
使用arange创建一个递增或者递减的数列:
np.arange(3, 7)
#结果为array([3, 4, 5, 6])
注意这里的(3, 7)是一个左开右闭的区间
使用linspace均分一块长度的数据:
np.linspace(0, 1, 5)
#划分结果为array([0. , 0.25, 0.5, 0.75, 1. ])
这里前两个数指的是范围,最后一个数指的是划分的样本数量。
创建一些完全随机的数:
np.random.rand(2, 4)
生成两行四列完全随机的数字
指定numpy数组的数据类型
在numpy中,数组默认的类型是64位的浮点数,修改数据类型通过使用dtype来修改
a = np.zeros((4, 2), dtype=np.int32)
有np.int8/16/32/64,np.uint8/16/32/64,np.float32/64,bool,str等等
转换数据类型
a = np.zeros((2, 4))
b = a.astype(int)
加法和除法
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
a + b
#计算结果为np.array([5,7,9])
a/b
#计算·结果为np.array([0.25, 0.4, 0.5])
乘法
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
np.dot(a, b)
#np.dot会将俩个数据进行点乘运算,结果为32
a = np.array([1, 2], [3, 4])
b = np.array([2, 0], [0, 2])
a @ b
#矩阵乘法,和np.matmul()一样,输出array([2,4], [6, 8])
平方根
a = np.array([1, 2, 3])
np.sqrt(a)
#结果array([1, 1.41421356, 1.73205081])
三角函数
a = np.array([1, 2, 3])
np.sin(a)
np.cos(a)
#array([0.74147098, 0.90929743, 0.14112001])
#array([0.54030231, -0.41614684, -0.9899925])
对数和指数运算
a = np.array([1, 2, 3])
np.log(a)
np.power(a, 2)
#array[0. , 0.69314718, 1.09861229]
#array([1, 4, 9], dtype=int32)
广播-举例乘法
a = np.array([1, 2, 3])
a * 5
#array([5, 10, 15])
广播-举例加法
a = np.array([[1], [10], [20]])
b = np.array([0, 4, 2])
a + b
#array([[1, 2, 3], [10, 11, 12], [20, 21, 22]])
不同尺寸的数组做运算时,numpy会将其扩展至相同的尺寸,这一性质叫做广播
最小最大值
a = np.array([1, 2, 3, 4, 5])
a.min()
a.max()
#输出1和5
最小最大值索引
a = np.array([1, 2, 3, 4, 5])
a.argmin()
a.argmax()
#输出0和4
求和
a = np.array([1, 2, 3, 4, 5])
a.sum()
#输出15
平均值
a = np.array([1, 2, 3, 4, 5])
a.mean()
#输出3.0
中位数
a = np.array([1, 2, 3, 4, 5])
np.median(a)
#输出3.0
方差和标准方差
a = np.array([1, 2, 3, 4, 5])
a.var()
a.std()
#输出2.0和1.4142135623730951
维度处理
对于上述数据,我们可以使用axis对维度进行处理
a = np.array([1, 2, 3, 4, 5], [5, 6, 7, 8, 9])
a.sum(axis=0)
#输出:array([6, 8, 10, 12, 14])这里axis=0指的是第一维度,也就是纵向相加
a.sum(axis=1)
#输出:array([15,35])这里axis=1指的是第二位维度,也就是横向相加
获取下标元素
a = np.array([1, 2, 3], [4, 5, 6])
a[0, 1]
#输出:2
寻找符合条件的值
a = np.arange(10)
#这里a是:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a[a < 3]
#这里是:array([0, 1, 2])
#这里可以使用多种不同的条件,包括a[(a > 3) & (a % 2 == 0)]
切片获取
a = np.array([1, 2, 3], [4, 5, 6])
a[0, 0:2]
#输出array[1, 2]
0:2代表[0,2)这个区间,左闭右开
a = np.array([1, 2, 3], [4, 5, 6])
a[0, :]
#这样可以输出第一行所有的元素,也可以直接去掉冒号
a[0]
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
a[0:9:2]
#输出为array([1, 3, 5, 7, 9])
a[0:9:3]
#输出为array([1, 4, 7])
这里第二个冒号后面的指切片距离,每隔几个数选一个数字,这个跨度可以选负数,选负数的话就可以从右往左取
a = np.array([1, 2, 3, 4, 5])
a[4:1:-2]
#输出是array([5, 3])
所以经常会看到这种写法:
a = np.array([1, 2, 3, 4, 5])
a[::-1]
#输出是array([5, 4, 3, 2, 1])
1.导入numpy库并简写为np
import numpy as np
2.打印numpy库的版本和配置说明
print(np.__version__)
np.show_config()
3.创建一个长度为10的空向量
np.zeros(10)
5, 3])
所以经常会看到这种写法:
```python
a = np.array([1, 2, 3, 4, 5])
a[::-1]
#输出是array([5, 4, 3, 2, 1])