美文网首页Numpy
NumPy基础之数组的操作

NumPy基础之数组的操作

作者: 5f2a6061653d | 来源:发表于2018-08-24 21:47 被阅读21次

数组的操作

数组创建完成之后,需要对数组中数据进行访问,对数组的信息进行获取,对数组整体进行操作,接下来着重讲解对数组的操作。
1.获取数组轴的个数,在Python中轴的个数被称为秩。
NumPy中通过ndim来获取数组的轴的个数,具体示例如下所示:

In [35]: import numpy as np
In [36]: arr = np.array([[1,2,3,4],[5,6,7,8]])
In [37]: rank = arr.ndim

上述代码是获取数组轴的个数,其中In [36]是创建数组arr;In [37]是获取数组arr轴的个数并赋值给变量rank;运行结果如下所示:

In [38]: rank
Out[38]: 2

2.获取数组的维度,即行数和列数。

NumPy中通过shape来获取数组的维度,即获取数组的行数和列数,具体示例如下所示:

In [39]: import numpy as np
In [40]: arr = np.array([[1,2,3,4],[5,6,7,8]])
In [41]: shape = arr.shape

上述代码是获取数组的维度,其中In [40]是创建数组arr;In [41]是获取数组arr的维度并赋值给变量shape;运行结果如下所示:

In [42]: shape
Out[42]: (2, 4)

3.获取数组中元素个数。

NumPy中通过size来获取数组中元素的总个数,即为shape中元组元素的乘积,具体示例如下所示:

In [43]: import numpy as np
In [44]: arr = np.array([[1,2,3,4],[5,6,7,8]])
In [45]: size = arr.size

上述代码是获取数组中元素的个数,其中In [44]是创建数组arr;In [45]是获取数组arr的元素个数并赋值给变量size;运行结果如下所示:

In [46]: size
Out[46]: 8

4.获取数组中元素类型。

NumPy中通过dtype来获取数组中元素类型,其中含有不同精度数据时,以精度高的为基准,具体示例如下所示:

In [47]: import numpy as np
In [48]: arr = np.array([[1,2,3,4],[5,6,7,8]])
In [49]: arr1 = np.array([[1.0,2,3,4],[5.0,6,7,8]])
In [50]: type1 = arr.dtype
In [51]: type2 = arr1.dtype

上述代码是获取数组中元素类型,其中In [48]是创建数组arr;In [49]是创建含有浮点数和整数的数组arr1;In [50]是获取数组arr中元素类型,并赋值给变量type1;In [51]是获取数组arr1中元素类型并赋值给变量type2;运行结果如下所示:

In [52]: type1
Out[52]: dtype('int32')
In [53]: type2
Out[53]: dtype('float64')

上述运行结果中,type1为int32,而type2为float64,因此数组中元素类型根据精度高为基准确定的。

NumPy中支持多类型的数据,具体如下表所示。

类型 类型代码 说明
int8,uint8 i1,u1 有符号和无符号的8位(1个字节)整型
int16,uint16 i2,u2 有符号和无符号的16位(2个字节)整型
int32,uint32 i4,u4 有符号和无符号的32位(4个字节)整型
int64,uint64 i8,u8 有符号和无符号的64位(8个字节)整型
float16 f2 半精度浮点数
float32 f4或f 标准单精度浮点数,与C的float兼容
float64 f8或d 标准的双精度浮点数,与C的double和Python的float对象兼容
float128 f16或g 扩展精度浮点数
complex64,complex128 c8,c16 分别用两个32位、64位或128位浮点数表示的复数
complex258 c32 复数
bool 存储True和False值的布尔类型
object O Python对象类型
string_ S 固定长度的字符串类型(每个字符1个字节)
unicode_ U 固定长度的Unicode类型(字节数由平台决定),与字符串的定义方式一样

5.访问数组。

  • 访问一维数组

数组是通过索引来进行访问的,一维数组的访问具体示例如下所示:

In [54]: import numpy as np
In [55]: arr = np.array([1,2,3,4,5,6,7,8,9,10])
In [56]: a = arr[0]
In [57]: b = arr[5]

上述代码是访问一维数组,其中In [55]是创建了一个一维数组arr;In [56]是获取数组中索引值为0的数值并赋值给变量a;In [57]是获取数组中索引值为5的数值并赋值给变量b;a,b运行结果如下所示:

In [58]: a
Out[58]: 1
In [59]: b
Out[59]: 6
  • 访问二维或多维数组

二维数组或多维数组也是通过索引来访问的,接下来以二维数组为例讲解二维数组或多维数组的访问,具体示例如下所示:

In [60]: import numpy as np
In [61]: arr = np.array([[1,2,3,4],[5,6,7,8]])
In [62]: a = arr[0][0]
In [63]: b = arr[1][3]

上述代码是访问二维数组,其中In [61]是创建了一个二维数组arr;In [62]是获取数组中行索引值为0且列索引值也为0,即第1行第1列(数组索引值都是从0开始的)的数值并赋值给变量a;In [63]是获取数组中行索引值为1列索引值为3,即第2行第4列的数值并赋值给变量b;a,b运行结果如下所示:

In [64]: arr
Out[64]:
array([[1, 2, 3, 4],
 [5, 6, 7, 8]])
In [65]: a
Out[65]: 1
In [66]: b
Out[66]: 8

6.数组切片

  • 一维数组切片

一维数组切片与Python中列表切片类似,具体示例如下所示:

In [67]: import numpy as np
In [68]: arr = np.array([1,2,3,4,5,6,7,8,9,10])
In [69]: a = arr[1:5]
In [70]: b = arr[:5]
In [71]: c = arr[1:]
In [72]: d = arr[:]

上述代码是一维数组切片,其中In [68]是创建了一个一维数组arr;In [69]是对数组按照索引值从1到5(包括索引值1,不包括索引值5)进行切片截取并赋值给变量a;In [70]是按照索引值从数组起始位置到5(不包括索引值5)进行切片截取并赋值给变量b;In [71]是按照索引值从1到数组结尾位置(包括索引值1)进行切片截取并赋值给变量c;In [72]是切片截取整个数组并赋值给变量d;a,b,c,d运行结果如下所示:

In [73]: arr
Out[73]: array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
In [74]: a
Out[74]: array([2, 3, 4, 5])
In [75]: b
Out[75]: array([1, 2, 3, 4, 5])
In [76]: c
Out[76]: array([ 2, 3, 4, 5, 6, 7, 8, 9, 10])
In [77]: d
Out[77]: array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
  • 二维或多维数组切片

二维数组或多维数组切片原理与上述一维数组切片类似,但整体理解可能会有一定的难度,因此本节将以二维数组为例详细讲解二维或多维数组切片,具体示例如下所示:

In [78]: import numpy as np
In [79]: arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
In [80]: a = arr[1:2,1:2]
In [81]: b = arr[1:,:2]
In [82]: c = arr[:2,1:]
In [83]: d = arr[:,:]

上述代码是访问二维数组切片,其中In [79]是创建了一个3×3的二维数组arr,In [80]是数组arr切片的索引值由两部分组成前者1:2是数组中行的切片操作,按照索引值从1到2(包括索引值1,不包括索引值2)进行行切片截取,即从截取第23行,后者1:2是数组中列的切片操作,在行切片的基础上进行列切片操作,即截取第23列,并将最终切片截取结果赋值给变量a;In [81]是数组切片的索引值同样由两部分组成,前者是从数组第2行到最后一行的行切片操作,后者是从第1列到第3列(不包括第3列)的列切片操作,并将最终切片截取结果赋值给变量b;In [82]是数组切片的索引值也是由两部分组成,前者是从数组的第1行到第3行(不包括第3行)的行切片操作,后者是从数组的第2列到最后1列的列切片操作,并将最终切片截取结果赋值给变量c;In [83]是切片截取整个二维数组;a,b,c,d运行结果如下所示:

In [84]: arr
Out[84]:
array([[1, 2, 3],
 [4, 5, 6],
 [7, 8, 9]])
In [85]: a
Out[85]: array([[5]])
In [86]: b
Out[86]:
array([[4, 5],
 [7, 8]])
In [87]: c
Out[87]:
array([[2, 3],
 [5, 6]])
In [88]: d
Out[88]:
array([[1, 2, 3],
 [4, 5, 6],
 [7, 8, 9]])

相关文章

  • 机器学习利器之Numpy

    Numpy 多维数组 Numpy 创建N维数组 查看数组属性 shape操作 数组索引和迭代 拼接、分割 基础运算...

  • NumPy基础之数组的操作

    数组的操作 数组创建完成之后,需要对数组中数据进行访问,对数组的信息进行获取,对数组整体进行操作,接下来着重讲解对...

  • numpy数组基础操作

  • 2. Numpy使用

    numpy的基本操作 生成数组 数组的基本操作 数组的运算 数组间的运算

  • 基于python的数据分析三剑客

    实验一、数据处理之Numpy 一、实验目的 1. 了解numpy库的基本功能 2. 掌握Numpy库的对数组的操作...

  • NumPy 基础:数组和矢量计算

    NumPy 基础:数组和矢量计算 NumPy 的 ndarray : 一种多维数组对象 创建ndarray 数组创...

  • NumPy 基础入门

    NumPy 基础入门 多维数组 数值类型 数据类型对象(dtype) 记录类型 操作形状 堆叠 分割 属性 转换

  • NumPy索引操作

    NumPy数组中对索引的操作

  • numpy基础(一)

    numpy 基础简介 numpy 操作的主要对象是同类型的多维数组。它是一张表,通常它的元素都是数字。并通过正整数...

  • Numpy库(一)- 数组的创建

    1 Numpy预备基础知识: 1.1 Numpy数据类型: ​ 1.2 Numpy数组属性: ​ 1.2.1 各个...

网友评论

    本文标题:NumPy基础之数组的操作

    本文链接:https://www.haomeiwen.com/subject/jewdbftx.html