一、与random有关的一些函数的区别,首先导入numpy
import numpy as np
- np.random.randint(low, high=None, size=None, dtype=‘l’)
从low到high的范围随机取整数填充多维数组, size用于指定数组的形状,dtype默认为长整型 - np.random.random(size=None)
函数随机生成0到1的随机数 [0,1) 填充数组,size指定多维数组的形状 - np.random.randn(d0, d1, …, dn)
产生以0为中心 方差为1 的 标准正太分布 的随机数 填充数组, 传入几个参数,就创建几维数组 - np.random.normal(loc=0.0, scale=1.0, size=None)
normal是可以指定中心和方差的一般正态分布
loc 指明 正态分布的中心
scale 指明正态分布的变化范围 - np.arange([start, ]stop, [step, ]dtype=None)
从start,到end,每隔step取一个值,放入数组
step为几就隔几个取一个值,默认为1
start和step可以省略
二、numpy整数数组形式的索引与切片
nd = np.random.randint(0,10,size=(5,6))
nd
array([[1, 2, 1, 9, 4, 0],
[0, 3, 4, 6, 6, 5],
[4, 3, 6, 4, 3, 4],
[7, 9, 6, 5, 9, 9],
[8, 5, 7, 1, 0, 7]])
顺序任意 可以正向取 也可以反向取 可以任意取 而且可以重复取
nd[[1,2],1]
array([3, 3])
nd[-1,[0,2,4]]
array([8, 7, 0])
nd[-1,[2,4,0,0,0,0]]
array([7, 0, 8, 8, 8, 8])
nd[[2,4],[1,3]]
array([3, 1])
切片是 从外往里 一级一级切
nd[:,0:2]
array([[1, 2],
[0, 3],
[4, 3],
[7, 9],
[8, 5]])
nd[1:3,1:-1]
array([[3, 4, 6, 6],
[3, 6, 4, 3]])
三、numpy级联
np.concatenate((a1, a2, …), axis=0, out=None)
axis参数改变连结的方向, 默认为0,即纵向拼接
nd = np.random.randint(0,10,size=(4,5))
nd
array([[9, 6, 6, 7, 0],
[3, 2, 7, 5, 6],
[1, 8, 5, 9, 9],
[9, 6, 4, 0, 3]])
np.concatenate((nd,nd),axis=0) # 或者np.concatenate((nd,nd),axis=-2)
array([[9, 6, 6, 7, 0],
[3, 2, 7, 5, 6],
[1, 8, 5, 9, 9],
[9, 6, 4, 0, 3],
[9, 6, 6, 7, 0],
[3, 2, 7, 5, 6],
[1, 8, 5, 9, 9],
[9, 6, 4, 0, 3]])
np.concatenate((nd,nd),axis=1) # 或者np.concatenate((nd,nd),axis=-1)
array([[9, 6, 6, 7, 0, 9, 6, 6, 7, 0],
[3, 2, 7, 5, 6, 3, 2, 7, 5, 6],
[1, 8, 5, 9, 9, 1, 8, 5, 9, 9],
[9, 6, 4, 0, 3, 9, 6, 4, 0, 3]])
四、ndarry的聚合操作
-
只要有ture就返回true
np.any(nd,axis=0) -
是否都是True
np.all(nd,axis=0) -
np.argwhere()
# 使用argwhere 可以按照值去找 元素的索引 # 使用argwhere 可以按照 值去找 元素的索引 np.argwhere(nd==9) # np.argwhere(nd==1) # np.argwhere(nd>6) # argwhere本身是用来找 值不是0的元素的索引的 nd array([[9, 2, 2], [7, 7, 0], [1, 4, 6]]) nd=9 array([[ True, False, False], [False, False, False], [False, False, False]])
五、广播机制
对应项相加,不足的部分自动补全
m = np.ones((2, 3))
m
array([[1., 1., 1.],
[1., 1., 1.]])
a = np.arange(1,4,1)
a
array([1, 2, 3])
m + a
array([[2., 3., 4.],
[2., 3., 4.]])