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)


目录
相关文章
|
2月前
|
数据采集 存储 监控
淘宝详情数据采集(商品上货,数据分析,属性详情,价格监控),海量数据值得get
淘宝详情数据采集涉及多个环节,包括商品上货、数据分析、属性详情以及价格监控等。在采集这些数据时,尤其是面对海量数据时,需要采取有效的方法和技术来确保数据的准确性和完整性。以下是一些关于淘宝详情数据采集的建议:
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
深入学习NumPy库在数据分析中的应用场景
深入学习NumPy库在数据分析中的应用场景
|
2月前
|
机器学习/深度学习 数据挖掘 索引
Python数据分析(一)—— Numpy快速入门
Python数据分析(一)—— Numpy快速入门
|
14天前
|
数据可视化 数据挖掘 C++
数据分析综合案例讲解,一文搞懂Numpy,pandas,matplotlib,seaborn技巧方法
数据分析综合案例讲解,一文搞懂Numpy,pandas,matplotlib,seaborn技巧方法
|
26天前
|
数据采集 数据可视化 数据挖掘
NumPy在数据分析中的核心应用
【4月更文挑战第17天】NumPy是Python数据分析基础库,核心应用包括数据结构化、预处理、统计分析和可视化。它提供`ndarray`多维数组对象及灵活索引,用于数据存储和处理。数据预处理支持缺失值处理,统计分析涵盖描述性统计和相关性分析。虽不直接支持数据可视化,但能与Matplotlib等库集成绘制图表。掌握NumPy能提升数据分析效率,助于挖掘数据价值。
|
4月前
|
存储 数据可视化 数据挖掘
NumPy 和 Pandas 数据分析实用指南:1~6 全(下)
NumPy 和 Pandas 数据分析实用指南:1~6 全
80 0
|
4月前
|
关系型数据库 MySQL 数据挖掘
NumPy 和 Pandas 数据分析实用指南:1~6 全!(上)
NumPy 和 Pandas 数据分析实用指南:1~6 全
71 0
|
4月前
|
数据可视化 安全 数据挖掘
NumPy 秘籍中文第二版:十二、使用 NumPy 进行探索性和预测性数据分析
NumPy 秘籍中文第二版:十二、使用 NumPy 进行探索性和预测性数据分析
45 0
|
20天前
|
机器学习/深度学习 数据可视化 数据挖掘
Python跳水:探索数据分析的深渊
Python跳水:探索数据分析的深渊
22 0
|
14天前
|
机器学习/深度学习 数据采集 算法
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告