numpy学习笔记

 

1、numpy的类型与“类型代码”之间的映射关系

“ 类型代码 ”是我们在创建结构化数组的时候经常用到的,比如i8‘ 'U10’这样的类型标记,那他们到底是什么意思?

参见下面的对应关系:

 

2、花式索引——Fancy Indexing

花式索引指的是根据“整数素组 ”进行索引。下面以二维数组为例

a[[1,2,3,4]]   #选取2、3、4、5行

a[[-1,-3,-7]]  #根据负数索引也可以

a[[1,3,5],[2]]  #花式索引选取第 2、4、6行的第3列元素

a[[1,3,5],[1,2]]  #报错。总结:花式索引不能同时选取多行多列的单个元素,但是可以选取多行1列的元素

那怎么解决呢?

a[np.ix_([1,3,5],[1,2])]  #选取第2、4、6行的对应的第2、3、列数据,不会出错

总结:np.ix_的使用方法

a [ np.ix_([.....行号....] , [.....列号....] ) ]

花式索引与切片不一样,总是产生新的数组,而不是视图。

3、数据排序

sorted函数:np.sort(a)    或者是  a.sort()

argsort函数:返回从小到大的顺序排列之后,数组的索引的位置。 np.argsort(a)    a.argsort()

searchsorted函数:np.searchsorted(a,b)   返回的是b应该在a中插入的位置

b=np.array([1,3,5,7,9])
c=np.searchsorted(b,[4,8])  # 4应该插在3的后面,3的索引为1,故而返回2;8应该插在7的后面,7的索  引为3,故而返回4
print(c)  # [2,4]

partition函数:

b=np.array([11,21,15,7,19])
c=np.partition(b,3)   #已排序后的第3个数进行划分,索引数小于3的放在前面并排序,索引大于3的放在后面并排序
d=np.argpartition(b,3)
print(c)   #[ 7 11 15 19 21]
print(d)   #[3 0 2 4 1]

4、修改数组的形状

更改形状:a.shape=3,2   等价于a.reshape(3,2)   等价于np.reshape(a,newshape=(2,3))

数组转置:a.T   等价于 np.tranpose(a)   等价于a.swapaxes(0,1)  #交换两个轴的顺序

增加维度:b=a[:,np.newaxis]     b=a[np.newaxis,:,newaxis]      b=b[newaxis,newaxis,:]

去除多余维度:将所有长度为一的维度去除,如一个数组为(1,5,1)去除之后变为了(5,)

                         np.squeeze(a)

数组拼接:c1=np.concatenate((a,b)) #默认axis=0    等价于np.vstack((a,b))

                  c2=np.concatenate((a,b),axis=1)             等价于np.hstack((a,b))

                  还有几个需要学习的,np.stack()    ap.dstack()     np.hsplit()     np.vsplit()

数组展平:a.flat     等价于   a.flatten()      等价于   a.reval()

至少保证数组有 x 维:np.atleast_1d(a)    np.atleast_2d(a)      np.atleast_3d(a)    

5、对角线:

         a.diagonal()    可以使用偏置量来查看“ 次对角线 ”,正数表示右移,负数表示左移。

         花式索引查看对角线:i=[1,2,3]  a[i,i]

6、数组的产生函数

      np.arange(start,end,step)

      np.linespace(start,end,num)

      np.logspace(start,end,num)

      np.meshgrid(x,y)               等价于 np.mgrid[start:end:step,start:end:step]   #注意mgrid不是函数哦

      np.meshgrid(x,y,sparse=True)        等价于 np.ogrid[start:end:step,start:end:step]   #注意ogrid不是函数哦

     meshgrid  的理解:

    

  • Numpy中Meshgrid函数介绍及2种应用场景_Python

产生行向量:np.r_[start,end,step]     也可以使用拼接   np.r_[(1,2,3),4,[5,6]]   #将三者拼接起来

产生列向量:np.c_[start:end:step]    #列向量不能使用拼接的方法。

np.ones()        还有类似的     np.ones_like(a)

np.zeros()        还有类似的     np.zeros_like(a)      

np.empty()      还有类似的     np.empty_like(a) 

产生单位矩阵:np.eye(5)   等价于  np.identity(5)  #二者都产生5x5的单位矩阵

7、数组的集合运算

8、numpy中的 线性代数——numpy.linalg

9、numpy中的随机数——numpy.random

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值