numpy常用的基本操作&创建数组

numpy常用的基本操作&创建数组

1.创建数组

  • 0和1数组

    • np.ones(shape)、np.zeros(shape)
  • 等差序列

    • np.linspace(start,stop,num=50) —生产等差数列 num是间距,默认50
    • np.arange(start,stope,step,dtype)
    • np.logspace(start,stop, num, endpoint, base, dtype)
  • 创建随机数组

    • np.random模块

      • 均匀分布

        • np.random.rand(10) —返回0~1之间的均匀分布的10个小数

          • rand(shape)里面传的是形状,返回都是0-1之间的数
        • np.random.uniform(0,10) —返回0~10之间的一个小数

          • np.random.uniform(1,3,(2,3))返回一个形状(2,3)的数组
        • np.random.randint(10) —返回0~10之间的一个整数

      • 正态分布

        • np.random.normal(均值,标准差,维度)
        • np.random.standard_normal(size=(3,4))
  • 用现有数据创建

    • np.array([[1,2,3],[4,5,6]]) —得到一个新数组

    • np.asarray(object) —得到的是object的索引

    • np.copy(object)

2.数组的索引

  • 例子:三维数组a1,a1 = np.array([ [[1,2,3],[4,5,6]], [[12,3,34],[5,6,7]]])
  • a1[0, 0, 1] 为2 , 修改a1[0,0] = 0
  • 则a1变为array([ [[0,0,0],[4,5,6]], [[12,3,34],[5,6,7]] ])

3.数组形状与类型变化

  • ndarray.reshape([x,y])

    • 修改原数组形状,如果给定的数组数据和需要reshape的形状不符合时,将会报错
  • ndarray.resize([x,y])

    • 返回新数组,如果新数组比原数组大,则将会copy原数组中的值对新数组进行填充
  • ndarray.flatten() —默认按行降维,,加上“F”,按列降维

  • 修改类型

    • ndarray.astype(np.int32)
    • ndarray.round(3) —修改小数位数

4.数组转换

  • ndarray.T 数组转置

  • ndarray.tostring()\tobytes()

  • ndarray.copy()

    • temp = stock_day_rise[:4, :4].copy() —截取部分数据进行copy

5.逻辑运算

  • np.all()

    • np.all(data[0:2,0:5] > 0) —判断data[0:2,0:5]是否全是>0的
  • np.unique() —返回新数组,去重

  • np.where(temp > 0, 1, 0)

    • np.where(np.logical_and(temp > 0.5, temp < 1), 1, 0)

      判断 大于0.5并且小于1的,换为1,否则为0

    • np.where(np.logical_or(temp > 0.5, temp < -0.5), 1, 0)

      判断 大于0.5或者小于-0.5的,换为1,否则为0

6.统计运算

  • np.min\max\mean\std\argmax\argmin
    • np.argmax、np.argmin —完成最大值最小值的索引
  • 分位数
    • np.percentile(a,50) —中位数就是50%处的数字

7.数组间运算

  • 广播机制
    • Broadcast机制的功能是为了方便不同形状的array(numpy库的核心数据结构)进行数学运算
    • 对应位置维度数相等,或者有一方为1

      • 维度相等
      • shape(其中相对应的一个地方为1)
  • 矩阵必须是2维的,矩阵乘法需要满足
    • (m,n)*(n,l) = (m,l)
    • np.matmul(矩阵a,矩阵b)

8.合并、分割

  • 合并
    • np.concatenate([a,b],axis=0)
    • np.hstack([a,b]) —横向
    • np.vstack([a,b]) —纵向
  • 分割
    • np.split(a, 4, axis=0)

10.属性&类型

  • 属性:shape、flags、ndim(数组维数)、size(数组中元素数量)、itemsize(一个元素的长度)、nbytes
  • 类型:np.bool、np.int8、np.uint8…

11.运算快的原因

  • 数组内存块风格
    • 创建array的默认方式是 “C-type” 以 row 为主在内存中排列
  • 并行化运算(也叫向量化运算)
    • numpy底层使用BLAS做向量,矩阵运算

12.一些方法的使用技巧

  • np.squeeze()
    • 从数组的形状中删除单维度条目,即把shape中为1的维度去掉
  • np.eye()
    • 可以用于生成one-hot矩阵
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值