NumPy数据分析基础:ndarray属性查看、创建及输出各类操作详解

简介: NumPy数据分析基础:ndarray属性查看、创建及输出各类操作详解

前言


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


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


本期内容主要详解ndarray各类属性对应输出函数,以及创建方式和输出打印方式。


一、axes数组轴


NumPy的主要对象是同构多维数组。它是一个元素表(通常是数字),所有元素都是相同类型的,由非负整数元组索引。在NumPy中,尺寸称为轴(axes)。


例如,三维空间中一个点的坐标数组[1,2,3]有一个轴。该轴中有3个元素,因此我们说它的长度为3。这里我们可以以xy轴来理解这个矩阵:


[[1, 2, 3],
 [0, 1, 2]]

第一轴为y轴,大小为2,第二轴为x轴,大小为3

.

二、ndarray属性


NumPy的数组类称为ndarray。注意numpy数组ndarray与标准Python库的array不同,array它只处理一维数组,功能较少。ndarray对象更重要的属性是:


ndarray.ndim

数组的轴数(维度)。

ndarray.shape

数组的维数。这是一个整数元组,表示每个维度中数组的大小。对于具有n行和m列的矩阵,数组结构将为(n,m)。

ndarray.size

数组的元素总数。等于数组结构元素个数。

ndarray.dtype

描述数组中元素类型的对象。可以使用标准Python类型创建或指定dtype。此外,NumPy还提供了自己的类型。numpy.int32,numpy.int16和numpy.float64。

ndarray.itemsize

数组每个元素的字节大小。例如,float64类型的元素数组具有itemsize 8 (=64/8),而complex32类型的元素之一具有itemsize 4 (=32/8)。它等效于ndarray.dtype.itemsize。

ndarray.data

包含数组实际元素的缓冲区。一般我们不需要使用此属性,自动索引工具访问数组中的元素。


代码展示:


import numpy as np
a=np.array([[ 0,  1,  2,  3],
            [ 4,  5,  6,  7],
            [8, 9, 10, 11]])
a

2d4e4d801aa648cfbb0b26389f22b848.png


ndarray.ndim


数组维度:


a.ndim


b831086d7d044d23bc3cfdafc61a71e2.png

ndarray.shape


数组维数:


a.shape

1b6fc1d0c344463abc9a5fac6aa1a988.png

ndarray.size


数组的元素总数:


a.size

9e9f52670b3d4773a5cb125b3af5cc9f.png

ndarray.dtype


数组中元素类型的对象:


a.dtype


09e932eb6e74487c88097e0673676d33.png

ndarray.itemsize


a.itemsize


519fc04ca07e4db081ebdc07c41ac0c3.png

一个int为4个字节


ndarray.data


数组实际元素的缓冲区:


a.data


ec4f772c61d6487585dbb707bea983b5.png


三、ndarray创建


可以使用array函数从常规Python列表或元组创建数组。结果数组的类型是根据序列中元素的类型推导出来的。


1.array()


例如我们刚刚举例的:

a=np.array([[ 0,  1,  2,  3],
            [ 4,  5,  6,  7],
            [8, 9, 10, 11]])

推导出他的数据类型为int32,那么我们换个数组:

b=np.array([ 0.1,  1.1,  2.1,  3.1])
b.dtype

3f0803b4f6164a3f927bf5df64d263d1.png


根据元素类型推导为float64。

array函数可以将序列转换为二维数组,将序列转化为三维数组:

b=np.array([(1,2,3),(4,5,6)])
b


2f675fd92cd44d76a665b7c8667793d2.png

数组的类型也可以在创建时明确指定:

b=np.array([(1,2,3),(4,5,6)], dtype=float)
b

01ff50478adc4e8e895daa90fc10659b.png


2.zeros()/ones()/empty()


函数zeros创建一个充满零的数组,函数ones创建一个装满一的数组,而函数empty创建一个数组,其初始内容是随机的,取决于内存的状态。默认情况下,创建的数组的dtype为float64,但可以通过关键字参数dtype指定。

np.zeros((2, 3))

b0d2c7187675473eb2cd503c671adc1d.png


np.ones((2, 3, 4), dtype=np.int16)

第一个1参数为矩阵个数,然后是维度。


63902f27802646f2bceb2eaef662308d.png


np.empty((2, 3)) 

4ecf933944494932ab9b2aefda3f3d28.png


3.arange()/linspace()


为了创建数字序列,NumPy提供了arange函数,该函数类似于Python内置范围,但返回一个数组。


np.arange(0, 10, 2)

e5585d5b4070430798566b7203394684.png


当arange与浮点参数一起使用时,由于浮点精度有限,通常无法预测获得的元素数。因此,通常最好使用函数linspace,该函数接收我们想要的元素数量作为参数:


np.linspace(0, 2, 6)


0为初始值,2为终止值,6为切分个数:


73793c0945474920add9fdc819380169.png

四、ndarray输出


打印数组时,NumPy以与嵌套列表类似的方式显示,布局如下:


  • 最后一个轴从左到右打印
  • 倒数第二个从上到下打印
  • 其余的也从上到下打印,每个切片与下一个切片之间用空行隔开

一维数组打印为行,二维打印为矩阵,三维打印为矩阵列表。


a=np.arange(4)
print(a)

e5a85533ceba4f8db12629ac5bcfdb8e.png

a=np.array([[ 0,  1,  2,  3],
    [ 4,  5,  6,  7],
    [8, 9, 10, 11]])
print(a)

8ba83da177864b449a058e1148bf1d73.png

print(np.ones((2, 3, 4), dtype=np.int16))


117ea9d57719415aabd2676622023507.png


如果数组太大而无法打印,NumPy会自动跳过数组的中心部分,只打印角点:


print(np.arange(10000))


df15f31f60094aaeb818ec87829fb997.png

要禁用此行为并强制NumPy打印整个数组,可以使用set_printoptions更改打印选项。


np.set_printoptions(threshold=sys.maxsize)


目录
相关文章
|
5月前
|
存储 索引 Python
NumPy 教程 之 NumPy Ndarray 对象 6
**NumPy的ndarray对象是核心特征,是同类型元素的多维数组。它包括数据指针、数据类型(dtype)、形状元组和跨度元组。创建数组使用`numpy.array()`,可通过`dtype`指定数据类型。例如:`a = np.array([1, 2, 3], dtype=complex)`生成复数数组。内存布局遵循C或F顺序。**
24 0
|
2月前
|
机器学习/深度学习 数据采集 算法
探索Python科学计算的边界:NumPy、Pandas与SciPy在大规模数据分析中的高级应用
【10月更文挑战第5天】随着数据科学和机器学习领域的快速发展,处理大规模数据集的能力变得至关重要。Python凭借其强大的生态系统,尤其是NumPy、Pandas和SciPy等库的支持,在这个领域占据了重要地位。本文将深入探讨这些库如何帮助科学家和工程师高效地进行数据分析,并通过实际案例来展示它们的一些高级应用。
59 0
探索Python科学计算的边界:NumPy、Pandas与SciPy在大规模数据分析中的高级应用
|
4月前
|
机器学习/深度学习 数据采集 并行计算
《零基础实践深度学习》1.7 附录:NumPy介绍 ndarray
这篇文章详细介绍了NumPy库的基本功能和应用,包括ndarray数组的使用、创建、属性查看、数据类型和形状的改变、基本运算、索引和切片,以及统计方法和随机数生成,是进行科学计算和数据分析的基础。
|
5月前
|
Python
NumPy 教程 之 NumPy 数组属性 7
NumPy教程:数组属性聚焦秩(rank)和轴(axis),表示维度数量。`ndarray.flags`揭示内存细节,如C/F_CONTIGUOUS标志指示数据连续性,OWNDATA检查内存所有权,WRITEABLE允许写入,ALIGNED确保硬件对齐,UPDATEIFCOPY涉及副本更新。
45 4
|
5月前
|
存储 索引 Python
NumPy 教程 之 NumPy 数组属性 1
NumPy教程介绍数组属性:秩表示维度,如一维数组秩为1,二维为2。轴(axis)定义了数组的线性方向,axis=0操縱列,axis=1操纵行。关键属性包括:ndim-秩,shape-维度大小,size-元素总数,dtype-数据类型,itemsize-元素字节大小,flags-内存信息,real/imag-复数部分,data-元素缓冲区。
36 5
|
5月前
|
Python
NumPy 教程 之 NumPy 数组属性 8
NumPy教程讲解数组属性,数组的秩表示维度数,如一维数组秩为1,二维为2。每个线性数组是轴,二维数组由两轴组成。`x=np.array([1,2,3,4,5])`,打印`x.flags`显示数组连续性、数据所有权、可写性等信息。
43 2
|
5月前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
【7月更文挑战第12天】Python的Pandas和NumPy库助力高效数据处理。Pandas用于数据清洗,如填充缺失值和转换类型;NumPy则擅长数组运算,如元素级加法和矩阵乘法。结合两者,可做复杂数据分析和特征工程,如产品平均销售额计算及销售额标准化。Pandas的时间序列功能,如移动平均计算,进一步增强分析能力。掌握这两者高级技巧,能提升数据分析质量和效率。
64 4
|
5月前
|
数据采集 数据可视化 数据挖掘
数据分析入门:用Python和Numpy探索音乐流行趋势
数据分析入门:用Python和Numpy探索音乐流行趋势
|
5月前
|
Python
NumPy 教程 之 NumPy 数组属性 4
NumPy数组的秩表示维度数,如一维数组秩为1,二维为2。每个线性数组是轴,二维数组含两个轴。`ndarray.shape`展示数组尺寸,返回一个元组,表示行数和列数(即秩)。此属性还能改变数组大小。
39 0
|
5月前
|
数据采集 数据挖掘 数据处理
Python数据分析加速器:深度挖掘Pandas与NumPy的高级功能
【7月更文挑战第14天】Python的Pandas和NumPy库是数据分析的核心工具。Pandas以其高效的数据处理能力,如分组操作和自定义函数应用,简化了数据清洗和转换。NumPy则以其多维数组和广播机制实现快速数值计算。两者协同工作,如在DataFrame与NumPy数组间转换进行预处理,提升了数据分析的效率和精度。掌握这两者的高级功能是提升数据科学技能的关键。**
55 0