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

目录

前言

一、axes数组轴

二、ndarray属性

ndarray.ndim

 ndarray.shape

 ndarray.size

 ndarray.dtype

ndarray.itemsize

ndarray.data

三、ndarray创建

1.array()

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

 3.arange()/linspace()

四、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

ndarray.ndim

数组维度:

a.ndim

 

 ndarray.shape

数组维数:

a.shape

 

 ndarray.size

数组的元素总数:

a.size

 

 ndarray.dtype

数组中元素类型的对象:

a.dtype

 

ndarray.itemsize

a.itemsize

 

 一个int为4个字节

ndarray.data

数组实际元素的缓冲区:

a.data

 

三、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

 

根据元素类型推导为float64。

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

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

 

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

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

 

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

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

np.zeros((2, 3))

 

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

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

 

np.empty((2, 3)) 

 

 3.arange()/linspace()

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

np.arange(0, 10, 2)

 

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

np.linspace(0, 2, 6)

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

四、ndarray输出

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

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

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

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

 

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

 

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

 

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

print(np.arange(10000))

 

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

np.set_printoptions(threshold=sys.maxsize)

点关注,防走丢,如有纰漏之处,请留言指教,非常感谢

以上就是本期全部内容。我是fanstuck ,有问题大家随时留言讨论 ,我们下期见

猜你喜欢

转载自blog.csdn.net/master_hunter/article/details/127138416
今日推荐