NumPy数据操作总结

  • 属性

    • shape:表示数组的各维度大小

    • ndim:表示数据维度

    • dtype:表示数组数据类型的对象

  • 创建ndarray的方式

    方法用法解释
    array函数arr = np.array(data)data为数组
    zeros函数arr = np.zeros(10)变量为NumPy数组长度
    empty函数np.empty((2, 3, 2))变量为空数组的各维度大小
    arange函数np.arange(15)
  • ndarray的数据类型

    类型说明
    int8, uint8有符号和无符号的8位整数
    int16, uint16有符号和无符号的16位整数
    int32, uint32有符号和无符号的32位整数
    int64, uint64有符号和无符号的64位整数
    float16半精度浮点数
    float32标准的单精度浮点数
    float64标准的双精度浮点数
    float128扩展精度浮点数
    complex64, complex128, complex256分别用两个32位, 64位或128位浮点数表示的复数
    bool布尔类型
  • NumPy数组运算

    示例说明
    arr * arr元素一一相乘,得到一个数组
    arr - arr元素一一相减,得到一个数组
    1/arr1除以每个元素,得到一个数组
    arr ** 0.5每个元素都开根,得到一个数组
    arr2 > arr每个对应元素一一比较,得到一个布尔型的数组
  • NumPy的函数

    • 创建数组

      • array函数:arr = np.array(data)
      • zeros函数:arr = np.zeros(10)
      • empty函数:np.empty((2, 3, 2))
      • arange函数:np.arange(15)
    • 数据类型:

      • 查看数据类型:dtype:arr.dtype
      • 转换数据类型:astype:float_arr = arr.astype(np.float64)
    • 通用函数

      • 平方:np.sqrt(arr)
      • 指数:np.exp(arr)
      • 最大值:np.maximum(x, y)
      • 返回整数和小数部分:remainder, whole_part = np.modf(arr)
    • 条件逻辑

      • 三元表达式:result = [(x if c else y) for x, y, c in zip(xarr, yarr, cond)]:当cond中的值为True时,选取xarr的值,否则从yarr中选取
      • 更简洁的三元表达式:result = np.where(cond, xarr, yarr):当cond中的值为True时,选取xarr的值,否则从yarr中选取(cond也可以为表达式:arr > 0)
      • 统计True值:(arr > 0).sum()
      • 判断是否存在True值:bools.any()
      • 判断数组中都是True值:bools.all()
    • 统计方法

      • 求平均值:arr.mean()np.mean(arr)
        • 参数:axis:arr.mean(axis=1):每行的平均值
      • 求和:arr.sum()
        • 参数:axis:arr.sum(axis=0):每列的和
      • 累加:arr.cumsum()
        • 参数:axis:arr.cumsum(axis=0):每列求累加
      • 累乘:arr.cumprod(axis=1)
      • 标准差:arr.std()
      • 方差:arr.var()
      • 最值:arr.max()arr.min()
      • 最值的索引:arr.argmax()arr.argmin()
    • 排序:arr.sort()

      • 参数:按某个维度排序:arr.sort(1)
    • 集合逻辑:

      • 唯一化:np.unique(names)
      • 交集:intersect1d(x, y)
      • 并集:union1d(x, y)
      • 求x的元素是否包含y:in1d(x, y)
      • 元素在x中且不在y中:setdiff1d(x, y)
      • 存在于一个数组中但不同时存在于两个数组中的元素:setxor1d(x, y)
    • 文件操作

      • 保存:np.save('some_array', arr):参数(文件名,对象名)
      • 导入:np.load('some_array.npy')
    • 数组的矩阵操作

      • 转置:arr.T

      • 高维数组转置:arr.transpose((1, 0, 2))

      • 计算内积:np.dot(arr1, arr2)

        arr1.dot(arr2)

    • 伪随机数生成:

      • 标准正态分布的随机数组:np.random.normal(size=(4, 4))
      • 更改随机数⽣成种⼦:np.random.seed(1234)
  • 切片索引方式

    • 切片单个元素或低一维度的数组:arr[5]

    • 切片一段数组:arr[5:8]

    • 切片整个数组:arr[:]

    • 利用切片修改元素值:arr_slice[:] = 64

    • 高维切片:arr2d[0][2]等价于arr2d[0, 2]

    • 布尔型索引:data[names == 'Bob']:找出data中满足条件为真的低维数组

      • 表示肯定:data[names == 'Bob']

      • 表示否定:data[~(names == 'Bob')data[names != 'Bob']

      • 组合多个布尔条件:mask = (names == 'Bob') | (names == 'Will')

        data[mask]

      • 布尔型索引结合普通索引:data[names == 'Bob', 2:]

    • 花式索引:

      • 以特定顺序选取行子集:arr[[4, 3, 0, 6]]

        arr[[-3, -5, -7]]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

From Star.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值