Python数据分析之NumPy(2)——NumPy核心概念强化篇

本文深入讲解NumPy数组的核心概念,包括ndarray对象、数据类型、数组标量、维度与轴的区别,以及ndim属性和矩阵秩的关系。同时,探讨了一维数组在NumPy中的表现形式及其转置方法,附带介绍了NumPy.random模块的常见用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文作为学习NumPy快速教程之后的知识补充,只有真正、正确地理解了每个概念意思,才会再以后的学习过程中少走弯路。

在NumPy的学习中,我们最重要的学习目标就是它的ndarray对象。

1. 数组对象

在这里插入图片描述

  • 三个基本对象:

1.ndarray本身
ndarray是同质的(homogenous):每个项目占用相同大小的内存块, 并且所有块都以完全相同的方式解释。
好处:
数组对象采用相同的数据类型,有助于节省运算和存储空间
2.数据类型(data-type object)
描述数组中单个固定大小元素布局的数据类型对象
3.数组标量(array-scalar)
访问数组的单个元素时返回的数组标量Python对象

  • ndarray对象
    ndarray是NumPy数组的类。
    ndarray最常见的属性:
    nidm:数组维度的个数
    shape:数组每个维度上元素的个数
    size:数组所有维度元素个数的总数

可以看到这三个属性都是围绕数组的元素和数组的维度来进行的(最核心的还是元素):

  1. nidm 表示的是数组维度的个数。

  2. shape 能反映每个维度所含有的元素数量,其实shape还隐含了维度的个数——shape( )输入的参数(元组中)有几个数字即代表数组有几个维度!所以,要记住,通过shape能够知道数组的维度数以及数组的大小。
    在这里插入图片描述
    注意一个误区:shape并非一定表示的是数组有几行几列!,比如一维向量的情况。

  3. size 反应的是整个数组所有元素的一个统计。

2. Numpy 中维度(dimentio)与轴 (axis)

首先要明白,在NumPy中
维度 (dimension) = 轴 (axis)
——官方的定义是:“ In NumPy dimensions are called axes.”,即,在NumPy中,(数组的)维度被称为轴。

判断一个数组轴的数量,分享下我自己的方法:最直观的是看[ ]的数量,有几层中括号就有几个维度/轴。还有一个方法是,查看数组shape,有几个元素,就有几个维度/轴。个人感觉方法很土,但也比较简单。

3.NumPy 的 ndim 与矩阵的秩 (rank)

首先要明白,NumPy中的 ndim 是(NumPy)数组含有的维度的个数或者说轴的个数。(上面已经提到“维度”和“轴”等价)

那么维度/轴的个数——ndim,跟矩阵的秩又是什么关系呢?
先给结论:
NumPy 中的 ndim = rank(NumPy中的秩) ≠ 线代中rank(矩阵的秩)

——官方(NumPy v1.12)的定义:“The number of axes is rank.”(在最新的官方文档-NumPy v1.17中,似乎已经没有了这个定义,或者移动位置了?)
说白了,在NumPy中,秩(rank) = ndim
举个例子:
例如,在三维空间中 [1, 2, 1] 的点的坐标是秩为1的数组,因为它有一个轴,这个轴的长度是3。对于下面的例子,这个数组的秩是2(它是二维的),第一个维度(轴)的长度是2,第二个维度的长度是3。

[[ 1., 0., 0.],
[ 0., 1., 2.]]

因此,NumPy中的秩,完全不同于在线性代数中,矩阵的秩。自然而然,NumPy中的维度也就不同于我们熟悉的数学中的维度,前者指的是数组维度的大小或者/轴的数量,而后者,指的是在空间中表示一个点所需要的最少坐标个数。

4. 一个坑:NumPy中的向量

先看代码后面的情况说明:

a = np.array(range(3)) 
b = a.T
c = a.transpose()
d = a[:, np.newaxis]
e = a.reshape(3, 1)
print("a:", a)
print("a.T:", b) 
print("a.transpose:", c)  
print("d: \n", d) 
print("e: \n", e)

4.1 一维数组在NumPy中到底是行向量还是列向量?

一维数组在NumPy中打印的结果是一行数组,因为
numpy 默认把列向量转化为行向量

在这里插入图片描述

4.2 一维数组如何转置?

使用 b 和 c 的方法不成功;
使用 d 和 e 两种方法都可以!
在这里插入图片描述

4.3 一维数组转置后的属性?

注意看一维数组转置前后的shape
在这里插入图片描述

5. 一些常用函数和操作

5.1 生成数组常用的numpy.random模块:

大致功能查看:
① 随机生成[0,1)之间的浮点数
np.random.random()
np.random.rand()
② 标准正态分布随机数
np.random.randn()
③ 产生随机整数
np.random.randint()
④ 将序列的所有元素随机排序
np.random.shuffle()
在这里插入图片描述
在这里插入图片描述
输入参数的格式可以参考下表:
在这里插入图片描述

待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值