numpy常规操作笔记

本文深入探讨了NumPy库中的高级操作,包括切片、索引、数组操作、形状修改及轴转换等核心功能。详细介绍了常规切片、高级索引、数组连接与分裂、展平、修改形状和转置等技巧,适用于数据科学与机器学习领域的实践。

前言

numpy的常用操作总结下,包括切片和索引,数组操作,轴转换(用的不多,多用transpose)

切片和索引

jupyter文档参考:https://github.com/feixian15/jupyter_note_zy/blob/master/jupyter notebook/numpy-切片和索引.ipynb
取出数组的一部分叫切片。索引是指按照一种数据结构快速查找数据的方式。

  1. 常规切割:
  • 可以通过冒号分隔切片参数 start:stop:step 来进行切片操作
  • 可以使用冒号:或者省略号…来取一个区间的元素
  1. 高级索引
  • 使用array[数组x,数组y]的形式来进行索引,数组x(y)可以是一维或者多维数组,这种形式只能进行索引,不能切片,一维数组切割出来结果为一维,多维数组切割出来结果为多维度
  • 可以借助 : 或 … 进行切片
  • 布尔索引: 结果为一维数组
  • 花式索引:也是通过数组进行切片或者索引, 和1,2的区别是能够自定义切割结果的顺序(能够变换里面元素的位置)。 包括顺序索引数组,倒序索引数组,多个索引数组(要使用np.ix_)
    笔记参考:http://www.runoob.com/numpy/numpy-advanced-indexing.html

数组操作

jupyter文档参考:https://github.com/feixian15/jupyter_note_zy/blob/master/jupyter notebook/numpy-数组操作.ipynb
numpy数组的常规操作有数组连接,劈分,展平,修改形状等操作

  1. 数组连接 :concatenate,stack,block
    concatenate根据指定的维度,对一个元组、列表中的list或者ndarray进行连接,
    不会增加维度。stack会按照选择的轴增加一个维度,实际使用的时候可以先把拼接后的形状写出来,然后再考虑合并后的数组是怎样的。
    block是把一系列的块(通常是ndarray格式)构成的list合并成一个大矩阵,举个例子,一个矩阵均分为4块,再合并为一个大矩阵
    只使用一句代码时可以使用这个函数,后面用例子具体说明。

  2. 数组劈分: split,hsplit, vsplit
    split(array, int)或者split(array, list),list中定义切割的位置。
    hsplit, vsplit和split用法一样

  3. 展平操作: flat,flatten,ravel
    flat返回一个数组元素迭代器, flatten()返回一份数组拷贝, ravel()修改会影响原始数组

  4. 修改形状:numpy.reshape (在一维,二维,三维的时候容易理解,当超过三维的时候就难理解一些,可以通过观察中括号[]的方式来理解)

  5. 转置: numpy.transpose 函数用于对换数组进行转置,transpose(1,2,0)

轴转换

主要是numpy.rollaxis 和 numpy.swapaxes两个函数

  1. rollaxis: 向后滚动特定的轴到一个特定位置,其它轴的相对位置不会改变(例如rollaxis(array,2,0)的轴变换是(0,1,2)变为(1,2,0))
  2. swapaxes: 用于交换数组的两个轴 swapaxes(array,2,0)是 (0,1,2)变为(2,1,0)
    具体参考:
    http://www.runoob.com/numpy/numpy-array-manipulation.html
    https://blog.csdn.net/kieven2008/article/details/80035668
    https://blog.csdn.net/liaoyuecai/article/details/80193996

其他常见函数

  1. np.unique() 得到矩阵不重复的元素
  2. np.where(array>0)返回array中>0的位置([x],[y]), x,y分别为横纵坐标的位置
  3. np.where(condition, [x, y]), 相当于:
if (condituons成立):
  数组变x
else:
  数组变y
「LLM那些事」系列第 4 篇《上下文窗口的边界》,文章连接:https://blog.csdn.net/houwenjin/article/details/163999753。 演示什么:在「预测」Sheet 的黄色格子里输入一句话(默认「来泡一杯」),四个「模型」——分别只统计最后 1 / 2 / 3 / 4 个字的 n-gram 查表——同时预测下一个字。同一个输入,看的上下文越长,候选越少、预测越确定: ┌────────────────┬──────────┬───────────────┬──────┐ │ 只看最后几个字 │ 用的前缀 │ 候选下一字数 │ 预测 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 1 个 │ 杯 │ 3(茶/子/水) │ 模糊 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 2 个 │ 一杯 │ 2(茶/水) │ 收窄 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 3 个 │ 泡一杯 │ 1(茶) │ 确定 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 4 个 │ 来泡一杯 │ 1(茶) │ 确定 │ └────────────────┴──────────┴───────────────┴──────┘
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值