np.常用函数

1、随机种子,每次生成的随机数都是一样的
np.random.seed(10)
np.random.randint(2,4,size=10)

Out[40]:
array([3, 3, 2, 3, 2, 3, 3, 2, 3, 3])

np.random.seed(10)
np.random.randint(2,4,size=10)
Out[40]:
array([3, 3, 2, 3, 2, 3, 3, 2, 3, 3])

2、np.random.randint() np.random.random()参数使用不一样
np.random.randint(10), 产生随机数0-10之间
np.random.random(10) #产生10个随机数,一维数组shape= 10
array([0.89081653, 0.19812181, 0.03061665, 0.87761494, 0.72743551,
0.54088093, 0.13145815, 0.41366737, 0.77872881, 0.58390137])

参数是 size random 的参数是size 不是shape
np.random.randint(2,8,size=4)#生成4个【2,8)整数
np.random.random(size = (3,4)),生成3行4列浮点数
np.random.normal() #均值0 方差1 的浮点数

 参数是shape

3、np.zeros((3,4)) np.zeros(10),参数都是shape np.zeros(10,dtype=int)
np.ones((3,4)) np.ones(20)参数都是shape np.ones(20,dtype=int)
默认浮点型,
参数是shape , 不是 size
np.full(shape=8,fill_value=10), np.full(8,fill_value=10),8个元素,都用10 填充
np.linspace(0,20,11) #等间隔 11个元素【0,20】闭区间,不是间隔
np.arange(0,20,2),# 2 是间隔,【0,20)
4、np.random.normal(loc =1,scale=0.1,size=10 ) #不写默认,均值0 方差1,
np.random.normal(size=10),np.random.normal(scale=0.1,size = (3,4))
np.random.randn(size=10) #标准正太分布错误,不要加上size
np.random.randn((3,4))#报错,生成的默认一维数组
np.random.randn(23)#产生23个元素的一维数组
np.random.randn(),#产生一个数字

5、合并分割数组
a= np.random.randint(2,8,size=(3,4))
b=np.random.randint(2,8,size=4)
分割括号里面的是索引,仍然是前闭后开的划分
np.concatenate([a,b.reshape(1,-1)]) 等价
np.vstack([a,b])

np.concatenate([a,b.reshape(1,-1)],axis=1) 等价
np.hstack([a,b])

np.split(a,[2],axis=1)等价 np.hsplit(a,[2])
np.split(a,[2])等价 np.vsplit(a,[2])

X,y = np.hsplit(a,[-1])# -1 是最后一列的数据,分开,两个都是二维数组,想让y变成向量
y = y[:,0]

6、矩阵运算
列表 list=2*[1,2,3,4] #[1, 2, 3, 4, 1, 2, 3, 4],列表乘是扩展成多个,不是计算
np.linalg.inv(A),矩阵的逆,方阵才可能有逆矩阵,如果不是方阵,伪逆矩阵求解
X=np.arange(16).reshape((2,8))
np.linalg.pinv()
A.dot(B),列等于行可以直接矩阵乘
7、repeat和tile扩充数组元素
np.tile(v,(2,1)),行向量堆叠 2次,列向量堆叠1次
Out[33]:
array([[1, 2],
[1, 2]])

np.tile(v,(2,2))
Out[21]:
array([[1, 2, 1, 2],
[1, 2, 1, 2]])

vstack  也可
v=np.array([1,2])
np.vstack([v]*3)  # 列方向堆叠三次  

Out[18]:
array([[1, 2],
[1, 2],
[1, 2]])
A=A=np.array([[1,2],[3,4]]),是矩阵,v 是向量,进行相加,维度保持一样,
np.vstack([v]*A.shape[0]) #shape[0]是高,也就多少行

8、追加元素,列表,array,a.extend(b) b. append(a)
9、np.方法
X=np.arange(16).reshape(4,-1)
np.sum(X,axis=0)
np.prod(X+1)
np.var(X)#方差
np.std(X)#标准差
np.mean(X)
np.median(X) #类似于下面且q=50得到中位数据,q=0得到最小数
np.percentile(X,q=50) # %百分位,得到一个值7.5,表示50%的数小于0.75,类似于从小到大的数据,划分一半的那个数
for percent in [0,25,50,75,100]:#一组数据的大致分布就有了
print(np.percentile(X,q=percent))

np.argmin(X) #索引
np.argmax(X)

X=np.arange(10)
np.random.shuffle(X) #[7 2 0 4 1 9 6 8 5 3],自身改变

np.sort(X) #不改变X
X.sort() #改变X

np.sort(X)
np.argsort(X) #从小到大的方向排序,的索引
np.sort(X,axis=1) #,axis=1 列的方向操作,左到右的方向,就是每行所有元素进行操作
np.sort(X,axis=0) # axis=0 行的方向,从上到下,进行操作,就是每一列的元素操作

10 索引取得元素 numpy,,,fancy index
b=np.random.randint(6,size=10)
ind=np.array([[1,2],[4,6]]) #[1,4,4] #向量取值索引可以是列表,或者向量,但是最后值不一样
print b[ind]
print b
输出
[[0 5]
[4 3]]
[5 0 5 2 4 0 3 0 2 3]

数组
索引可以是 列表, array ,或者bool列表访问元素
X=np.arange(16).reshape(4,-1)
print X
row = np.array([1,2])
c=np.array([3,0]) 也可以是c=[3,2],列表
print X[row,c]
c=[True,False,False,False]
print X[row,c]
print X<5 #返回元素对应True False

np.sum(X<5)
np.count_nonzero(X<5)
np.any(X0) #有任意一个元素0,判断是否有非0元素,返回bool
np.any(X<0)
np.all(X<0) #所有元素都小于0
np.sum(X%20) #偶数个数
np.sum(X%2
0,axis=1) #列方向,行偶数个数 #返回bool true 相加
np.sum(((X>3) & (X<2)) # 不是 条件运算符&&,因为X>3 返回的是bool ,

X[X<5] #索引是bool 直接这么写,得到的是向量值
X[X[:,3]%30,:] # 行操作, 列操作,得到的是数组
np.sum(~(X
0))
np.sum((X%2==0) | X>10)

10、画图
cosy =np.cos(x)
siny=y.copy()
plt.plot(x,siny,color=“red”,linestyle="–",label=“siny”)
plt.plot(x,cosy,color="#888fff",label=“cosy”)
plt.xlim(-5,15)
plt.ylim(0,1)
plt.axis([-1,11,-2,2]) #横坐标范围,纵坐标范围
plt.xlabel(“x axis”)
plt.ylabel(“y value”)
plt.legend() #plot中的label有 才有图示右上角的显示
plt.title(“jijiijijijij”)
plt.show()
###二维 横纵都是特征颜色是label。
x=np.random.normal(0,1,1000)
y=np.random.normal(0,1,1000)
plt.scatter(x,y,alpha=0.1)

plt.scatter(x[y0,0],x[y0,1],color=“red”,marker=“o”)
plt.scatter(x[y1,0],x[y1,1],color=“blue”,maker=“x”)

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值