NumPy数据分析基础:数组形态转换转置操作一文详解

简介: NumPy数据分析基础:数组形态转换转置操作一文详解

前言


作为数据分析三巨头Pandas、matplotlib、NumPy之一,必然要给足面子单独拿出来讲解一波。NumPy应用场景十分宽泛,Pandas很多函数转换后也都是NumPy数组类型的数据结构。在机器学习、深度学习以及一些数据处理操作中使用的频率甚至比Pandas都高。而且NumPy功能强大,使用起来也十分便捷,支持多种复杂操作。平时我的Pandas以及一些机器学习的文章都有用到NumPy,但是博客内容并没有详细解答NumPy的操作也没有记录有关NumPy操作的一些具体函数解答。对于我这种追求一站式服务需求的博主来说着实有点不妥,故把旧坑补上,出一期全新的一文速学系列-Numpy数据分析基础专栏。


此系列文章将被纳入我的专栏一文速学系列-NumPy数据分析基础,基本覆盖到使用NumPy数据分析日常业务以及常规的数学建模分析以及复杂操作方方面面的问题。从基础的数组操作逐步入门到处理矩阵矢量特征等复杂操作,以及专业的NumPy常用函数讲解,我都将花费了大量时间和心思创作,如果大家有需要从事数据分析或者数据开发、数学建模、Python工程的朋友推荐订阅专栏,将在第一时间学习到最实用常用的知识。此篇博客篇幅较长,值得细读实践一番,我会将精华部分挑出细讲实践。博主会长期维护博文,有错误或者疑惑可以在评论区指出,感谢大家的支持。


本篇文章将主要讲述ndarray数组的形态操作以及相关函数的使用。


一、更改数组的形状


数组的形状由沿每个轴的元素数给出:

rg = np.random.default_rng(1)
a = np.floor(10 * rg.random((3, 4)))
a

25d9579a990e4db68f17a2342724bd1a.png

可以使用各种命令更改阵列的形状。以下三个命令都会返回修改后的数组,但不会更改原始数组:


1.变为一维数组


a.ravel()


acf6658d417e480aaaa4c522d86c9840.png

2.重塑数组


a.reshape(6, 2)

bf147505ec5e4f6b9ac8d19a7821aae1.png


3.数组转置


a.T


a0c506ebfbc649ac831c04858c557375.png

ravel产生的数组中元素的顺序通常是“C样式”,即最右边的索引“变化最快”,因此[0,0]后面的元素是[0,1]。如果阵列被重塑为其他形状,则该阵列再次被视为“C样式”。NumPy通常创建按此顺序存储的数组,因此ravel通常不需要复制其参数,但如果数组是通过获取另一个数组的切片或使用异常选项创建的,则可能需要复制它。还可以使用一个可选参数,指示函数ravel和reconforme使用FORTRAN样式的数组,其中最左边的索引变化最快。


整形函数使用修改后的形状返回参数,而ndarray函数返回参数。resize方法修改数组本身:


a.resize((2, 6))
a

cd16c79240e74b7e9f9c117c5d300e1a.png


如果在整形操作中某个尺寸给定为-1,则会自动计算其他尺寸:


a.reshape(3, -1)

e799990e2ad9415fa4797b2122e75dd6.png

二、数组堆叠


几个数组可以沿着不同的轴堆叠在一起:

a = np.floor(10 * rg.random((2, 2)))
a
b = np.floor(10 * rg.random((2, 2)))
b
np.vstack((a, b))
np.hstack((a, b))


3eb24366ad8140dbb197bb8e3dafae5f.png

函数column_stack将1D数组作为列堆叠到2D数组中。它仅相当于二维阵列的hstack:

from numpy import newaxis
np.column_stack((a, b)) 
a = np.array([4., 2.])
b = np.array([3., 8.])
np.column_stack((a, b))

69c3377c3bbb47fca11baca876991555.png

但是对于一维矩阵是不一样的


np.hstack((a, b))


341697075faa426d9dbd683aa1dbde7d.png

newaxis是numpy中的一个函数,顾名思义,就是插入新维度的意思,比如将一维数组变成二维数组,二维变成三维等。


a[:, newaxis]

0d7e667f5a634735a1d0026ed42052c1.png

np.column_stack((a[:, newaxis], b[:, newaxis]))
np.hstack((a[:, newaxis], b[:, newaxis]))

411d7a54667d48b69e6f5a48128b6786.png


另一方面,对于任何输入数组,函数row_stack都等效于vstack。实际上,row_stack是vstack的别名:


通常,对于二维以上的数组,hstack沿第二轴堆栈,vstack沿第一轴堆栈,concatenate允许一个可选参数,给出应沿其进行连接的轴的数量。


在复杂的情况下,r_和c_对于通过沿一个轴叠加数字来创建阵列很有用。它们允许使用范围文字:

np.r_[1:4, 0, 4]

fdacc2642b34431f8ac4f9f014c085a1.png

当与数组一起用作参数时,r_和c_在默认行为上类似于vstack和hstack,但允许使用一个可选参数给出要连接的轴的数量。


三、拆分矩阵


使用hsplit,可以沿着数组的水平轴拆分数组,方法是指定要返回的等形状数组的数目,或者指定应该在其之后进行拆分的列:

a = np.floor(10 * rg.random((2, 12)))
a
np.hsplit(a, 3)
np.hsplit(a, (3, 4))


513bc3f03d1a4ee2bdf35d90c4aaff6b.png


vsplit沿垂直轴拆分,arraysplit允许指定要沿哪个轴拆分。

目录
相关文章
|
2月前
|
索引 Python
NumPy 教程 之 Numpy 数组操作 28
NumPy 提供多种数组操作功能,包括修改形状、翻转、连接和分割等。本教程重点介绍元素的添加与删除,如使用 `resize`、`append`、`insert` 和 `delete` 函数。其中 `numpy.insert` 可在指定索引前插入值,支持标量或数组插入。示例展示了不同情况下 `insert` 的使用方法,包括不指定轴时的数组扁平化插入,以及沿特定轴进行广播插入。
32 2
|
2月前
|
数据处理 索引 Python
NumPy 数组操作:和普通操作相较,到底蕴含着怎样令人费解的独特魅力?
【8月更文挑战第19天】NumPy是Python科学计算核心库,提供高效数组操作。不同于Python列表直接列举创建,NumPy用`np.array()`创建数组。两者都支持索引和切片,但NumPy性能更优。数学运算方面,NumPy支持简洁的向量化操作,如`my_array * 2`,无需循环。NumPy还简化了数组形状变换,如使用`reshape()`方法。此外,NumPy数组要求元素类型一致,提高了内存使用效率和计算速度。这些特点使NumPy在科学计算和数据分析中不可或缺。
28 0
|
6天前
|
Python
numpy | 插入不定长字符数组测试OK
本文介绍了如何在numpy中创建和操作不定长字符数组,包括插入和截断操作的测试。
|
5天前
|
API Python
Numpy 数组的一些集合操作
Numpy 数组的一些集合操作
13 0
|
5天前
|
编译器 Linux API
基于类型化 memoryview 让 Numpy 数组和 C 数组共享内存
基于类型化 memoryview 让 Numpy 数组和 C 数组共享内存
13 0
|
2月前
|
存储 缓存 C语言
|
2月前
|
索引 Python
|
2月前
|
索引 Python
NumPy 快速入门:数组操作基础
【8月更文第30天】NumPy 是 Python 中一个非常重要的科学计算库,它提供了高性能的多维数组对象以及用于操作这些数组的工具。NumPy 数组(也称为 `ndarray`)是 NumPy 库的核心,它比 Python 内置的列表类型更高效,特别是在处理大型数据集时。本文将介绍 NumPy 数组的基本概念、创建方法以及一些常用的数组操作。
19 2
|
2月前
|
Python
NumPy 教程 之 Numpy 数组操作 29
NumPy 提供多种数组操作函数,如修改形状、翻转和连接等。本教程重点介绍元素的添加与删除,包括 `resize`、`append`、`insert` 和 `delete` 函数。`numpy.delete` 用于从数组中删除指定元素,参数包括 `arr`(输入数组)、`obj`(待删元素)和 `axis`(删除轴)。示例展示了如何使用 `numpy.delete` 删除一维和二维数组中的元素。
32 4
|
2月前
|
数据挖掘 索引 Python
NumPy 教程 之 Numpy 数组操作 30
展示了如何使用`numpy.unique`去除数组中的重复值,并获取额外信息如索引和计数。示例中,数组`a`的重复值被去除,打印出唯一值及其在原数组中的首次出现索引、对应原值的索引以及各唯一元素的出现次数。这有助于数据分析时简化数据集。
30 2

热门文章

最新文章

下一篇
无影云桌面