numpy 创立数组 (矩阵)
创立数组
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.array(range(1, 6))
c = np.arange(1, 6) # np.arange 用法:arange(start,stop,step,dtype=None)
数组的类名和数据的类型
In [1]: type(a)Out[1]: numpy.ndarray
In [2]: a.dtype
Out[2]: dtype('int64') # 常见类型有 int,uint(8,16,32,64),float(16,32,64,128),complex(64,128,256),bool
数据类型的操作
a = np.array([1,0,1,0], dtype=np.bool) # 创立数组时指定数据类型
a.astype(np.int8) # 批改数组的数据类型
b = np.array([0.0485,0.2689,1.8567,0.8754])
np.round(b, 2) # 批改浮点型小数位数
数组的形态
a.shape # 查看数组形态
a.reshape(2,2) # 批改数组形态
a.flatten()# 把多维数组转化为一维数组
数组的计算
数组和数的计算
a = np.array([1, 2, 3, 4, 5])
b = a + 1 # 按位相加
c = a * 3 # 按位相乘
数组与数组的计算
a = np.array([[1, 2, 3, 4],
[5, 6, 7, 8]])
b = np.array([[1, 1, 1, 1],
[1, 1, 1, 1]])
c = np.array([1, 1, 1, 1])
d = np.array([[1],
[1]])
O1 = a + b # 形态雷同按位相加
O2 = a + c
O3 = a + d # 形态不同,只有满足播送准则才可计算,O1=O2=O3
数组的转置
a.transpose()
a.swapaxes(1,0)
a.T
以上的三种办法都能够实现二维数组的转置的成果,转置和替换轴的成果一样。
numpy 索引和切片
a[1,:] # 取一行,可简写为 a[1]
a[:,2] # 取一列
a[1:3,:] # 取间断多行,可简写为 a[1:3]
a[:,2:4] # 取间断多列
a[[1,3],:] # 取离散多行,可简写为 a[[1,3]]
a[:,[2,4]] # 取离散多行
a[a<2] # bool 索引
np.where(a<2,0,4) # 三元运算符, 满足条件 1 替换为 0,不满足替换为 4
a.clip(2,3) # 裁剪,大于 3 替换为 3,小于 2 替换为 2
numpy 中的 nan 和 inf
nan(NAN,Nan):not a number,示意不是一个数字,type 类型为 float。(两个 nan 是不相等的)
inf:infinity,inf 示意正无穷,-inf 示意负无穷,type 类型为 float
np.count_nonzero(a!=a) # 判断 a 中 nan 个数
np.isnan(a) # 判断是否为 nan,返回 bool 类型
a[np.isnan(a)] = 0 # nan 替换为 0
numpy 中罕用统计函数
求和:t.sum(axis=None)
均值:t.mean(axis=None)
中值:np.median(t,axis=None)
最大值:t.max(axis=None)
最小值:t.min(axis=None)
极值:np.ptp(t,axis=None) 即最大值和最小值之差
标准差:t.std(axis=None)
默认返回多维数组的全副的统计后果, 如果指定 axis 则返回一个以后轴上的后果
数组的拼接
np.vstack(a,b) # 竖直拼接
np.hstack(a,b) # 程度拼接
数组的行列替换
a[[1,2],:] = a[[2,1],:] # 行替换
a[:,[0,2]] = a[:,[2,0]] # 列替换
其余实用办法
1. 获取最大值最小值的地位
np.argmax(t,axis=0)
np.argmin(t,axis=1)
2. 创立一个全 0 的数组: np.zeros((3,4))
3. 创立一个全 1 的数组:np.ones((3,4))
4. 创立一个对角线为 1 的正方形数组 (方阵):np.eye(3)
5.numpy 生成随机数
留神:numpy 的 copy 和 view
- a=b 齐全不复制,a 和 b 相互影响
- a = b[:], 视图的操作,一种切片,会创立新的对象 a,然而 a 的数据齐全由 b 保存,他们两个的数据变动是统一的,
-
a = b.copy(), 复制,a 和 b 互不影响
本次分享就到这啦,如果对您有帮忙的话,麻烦点个关注再走哦~