自定义坐标轴
添加网格显示
添加描述信息
图像保存
在一个图中绘制多个plot
从现有数组生成
np.array(object, dtype)
np.asarray(a, dtype)
a = np.array([[1,2,3],[4,5,6]])
#从现有的数组当中创建
a1 = np.array(a)
#相当于索引的形式,并没有真正的创建一个新的
a2 = np.asarray(a)
生成固定范围的数组
1 np.linspace (start, stop, num, endpoint)
创建等差数组 — 指定数量
参数:
start:序列的起始值
stop:序列的终止值
num:要生成的等间隔样例数量,默认为50
endpoint:序列中是否包含stop值,默认为ture
#生成等间隔的数组
np.linspace(0, 100, 11)
返回结果:
array([ 0., 10., 20., 30., 40., 50., 60., 70., 80., 90., 100.])
- 2 np.arange(start,stop, step, dtype)
创建等差数组 — 指定步长
参数
step:步长,默认值为1
np.arange(10, 50, 2)
返回结果:
array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42,
44, 46, 48])
- 3 np.logspace(start,stop, num)
创建等比数列
参数:
num:要生成的等比数列数量,默认为50
#生成10^x
np.logspace(0, 2, 3)
返回结果:
array([ 1., 10., 100.])
生成随机数组
正态分布创建方式
-——np.random.randn(d0, d1, …, dn)
功能:从标准正态分布中返回一个或多个样本值
——np.random.normal(loc=0.0, scale=1.0, size=None)
loc:float
此概率分布的均值(对应着整个分布的中心centre)
scale:float
此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
size:int or tuple of ints
输出的shape,默认为None,只输出一个值
——np.random.standard_normal(size=None)
返回指定形状的标准正态分布的数组。
举例1:生成均值为1.75,标准差为1的正态分布数据,100000000个
x1 = np.random.normal(1.75, 1, 100000000)
返回结果:
array([2.90646763, 1.46737886, 2.21799024, …, 1.56047411, 1.87969135,
0.9028096 ])
- 均匀分布创建方式
- ——np.random.rand(d0, d1, ..., dn)
返回[0.0,1.0)内的一组均匀分布的数。
np.random.uniform(low=0.0, high=1.0, size=None)
功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high.
参数介绍:
low: 采样下界,float类型,默认值为0;
high: 采样上界,float类型,默认值为1;
size: 输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k), 则输出mnk个样本,缺省时输出1个值。
返回值:ndarray类型,其形状和参数size中描述一致。
——np.random.randint(low, high=None, size=None, dtype=‘l’)
从一个均匀分布中随机采样,生成一个整数或N维整数数组,
取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。
#生成均匀分布的随机数
x2 = np.random.uniform(-1, 1, 100000000)
返回结果:
array([ 0.22411206, 0.31414671, 0.85655613, …, -0.92972446,
0.95985223, 0.23197723])
数组的切片索引
直接进行索引,切片
对象[:, :] – 先行后列
形状修改
ndarray.reshape(shape, order)
返回一个具有相同数据域,但shape不一样的视图
行、列不进行互换
#在转换形状的时候,一定要注意数组的元素匹配
stock_change.reshape([5, 4])
stock_change.reshape([-1,10]) # 数组的形状被修改为: (2, 10), -1: 表示通过待计算
- ndarray.resize(new_shape)
修改数组本身的形状(需要保持元素个数前后相同)
行、列不进行互换
stock_change.resize([5, 4])
#查看修改后结果
stock_change.shape
(5, 4)
- ndarray.T
数组的转置
将数组的行、列进行互换
stock_change.T.shape
(4, 5)
类型修改
ndarray.astype(type)
返回修改了类型之后的数组
stock_change.astype(np.int32)
- ndarray.tostring([order])或者ndarray.tobytes([order])
构造包含数组中原始数据字节的Python字节
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[12, 3, 34], [5, 6, 7]]])
arr.tostring()
去重
np.unique()
temp = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])
np.unique(temp)
array([1, 2, 3, 4, 5, 6])
逻辑运算
生成10名同学,5门功课的数据
score = np.random.randint(40, 100, (10, 5))
取出最后4名同学的成绩,用于逻辑判断
test_score = score[6:, 0:5]
逻辑判断, 如果成绩大于60就标记为True 否则为False
test_score > 60
array([[ True, True, True, False, True],
[ True, True, True, False, True],
[ True, True, False, False, True],
[False, True, True, True, True]])
BOOL赋值, 将满足条件的设置为指定的值-布尔索引
test_score[test_score > 60] = 1
test_score
array([[ 1, 1, 1, 52, 1],
[ 1, 1, 1, 59, 1],
[ 1, 1, 44, 44, 1],
[59, 1, 1, 1, 1]])
通用判断函数
三元运算
判断前四名学生,前四门课程中,成绩中大于60的置为1,否则为0
temp = score[:4, :4]
np.where(temp > 60, 1, 0)
- 复合逻辑需要结合np.logical_and和np.logical_or使用
判断前四名学生,前四门课程中,成绩中大于60且小于90的换为1,否则为0
np.where(np.logical_and(temp > 60, temp < 90), 1, 0)
#判断前四名学生,前四门课程中,成绩中大于90或小于60的换为1,否则为0
np.where(np.logical_or(temp > 90, temp < 60), 1, 0)
统计运算
数组arr1是4行1列,arr2是1行3列。这两个数组要进行相加,按照广播机制会对数组arr1和arr2都进行扩展,使得数组arr1和arr2都变成4行3列。
XMind: ZEN - Trial Version