前言
numpy的常用操作总结下,包括切片和索引,数组操作,轴转换(用的不多,多用transpose)
切片和索引
jupyter文档参考:https://github.com/feixian15/jupyter_note_zy/blob/master/jupyter notebook/numpy-切片和索引.ipynb
取出数组的一部分叫切片。索引是指按照一种数据结构快速查找数据的方式。
- 常规切割:
- 可以通过冒号分隔切片参数 start:stop:step 来进行切片操作
- 可以使用冒号:或者省略号…来取一个区间的元素
- 高级索引
- 使用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数组的常规操作有数组连接,劈分,展平,修改形状等操作
-
数组连接 :concatenate,stack,block
concatenate根据指定的维度,对一个元组、列表中的list或者ndarray进行连接,
不会增加维度。stack会按照选择的轴增加一个维度,实际使用的时候可以先把拼接后的形状写出来,然后再考虑合并后的数组是怎样的。
block是把一系列的块(通常是ndarray格式)构成的list合并成一个大矩阵,举个例子,一个矩阵均分为4块,再合并为一个大矩阵
只使用一句代码时可以使用这个函数,后面用例子具体说明。 -
数组劈分: split,hsplit, vsplit
split(array, int)或者split(array, list),list中定义切割的位置。
hsplit, vsplit和split用法一样 -
展平操作: flat,flatten,ravel
flat返回一个数组元素迭代器, flatten()返回一份数组拷贝, ravel()修改会影响原始数组 -
修改形状:numpy.reshape (在一维,二维,三维的时候容易理解,当超过三维的时候就难理解一些,可以通过观察中括号[]的方式来理解)
-
转置: numpy.transpose 函数用于对换数组进行转置,transpose(1,2,0)
轴转换
主要是numpy.rollaxis 和 numpy.swapaxes两个函数
- rollaxis: 向后滚动特定的轴到一个特定位置,其它轴的相对位置不会改变(例如rollaxis(array,2,0)的轴变换是(0,1,2)变为(1,2,0))
- 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
其他常见函数
- np.unique() 得到矩阵不重复的元素
- np.where(array>0)返回array中>0的位置([x],[y]), x,y分别为横纵坐标的位置
- np.where(condition, [x, y]), 相当于:
if (condituons成立):
数组变x
else:
数组变y
本文深入探讨了NumPy库中的高级操作,包括切片、索引、数组操作、形状修改及轴转换等核心功能。详细介绍了常规切片、高级索引、数组连接与分裂、展平、修改形状和转置等技巧,适用于数据科学与机器学习领域的实践。

4931

被折叠的 条评论
为什么被折叠?



