N维数据结构(ndarray)
一、N维数组的基本概念和常用属性
顾名思义,N维数组(ndarray)是一个多维数组,描述了相同类型数据的集合
有很多属性可以描述N维数组,最常用的两个属性分别是数据类型和维度。
比如,上一页中,我们用了「整型(int)」和「二维」来描述示例中的数组,依次对应的就是数组的数据类型和维度这两个属性。
1)数据类型
NumPy数组的 数据类型 指的是数组中存储的元素类型,可以是:整型(int)、浮点型(float)、布尔型(bool)等。
需要注意的是,NumPy数组中的所有元素类型必须是一致的。
2)纬度
- 一维空间相当于一根直线。在这样的空间里,只能前进或者后退,所以只有长度的概念。
- 二维空间其实就是一个平面。在这个平面上,除了前进、后退以外,还可以向左或者向右,所以有长度和宽度的概念。
- 三维空间就像是一个立方体。在这个空间里,除了前进、后退、向左和向右移动外,还可以向上或者向下,所以有长度、宽度和高度的概念。
NumPy数组的维度和我们平常说的维度非常相似,接触最多的通常是一维(1D)和二维(2D)数组,可以通过中括号[ ]的层数来确定。
[…]表示一维数组,和Python中的列表长得很像。
在使用print()输出时,它们的区别在于数组之间的元素是用空格分隔,而列表是以逗号分隔。
一维数组的所有元素都在同一「行」里,一行中可以有很多元素。
[[…]]表示二维数组。
二维数组中的每个元素都是一个一维数组,并且每一行的元素数量都是一致的。
在二维数组中:
行数代表二维数组中一维数组的数量;
列数代表一维数组中元素的数量。
以此类推,[[[…]]]表示三维数组,三维数组中的每个元素都是一个二维数组;[[[[…]]]]表示四维数组,四维数组中的每个元素都是一个三维数组…
由于三维及三维以上的数组多用于复杂的科学计算中,平常很少能接触到,所以在这里我们就不进行系统地学习啦。
二、创建一个N维数组
1)安装和导入Numpy模块
安装numpy非常简单,在终端中输入代码:pip install numpy即可。如果在自己电脑上安装不上或安装缓慢,可在命令后添加如下配置进行加速:
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/
安装完后,下一步就是导入numpy。根据NumPy官方文档的倡导,在导入numpy时通常会使用「np」作为numpy的简写,方便以后调用。导入numpy的具体代码如下:
import numpy as np
2)创建n维数组
在导入numpy后,我们就可以开始创建N维数组啦~
创建N维数组的方式有很多,最简单的一种方式就是调用NumPy模块中的array()函数。
函数np.array()
np.array()是NumPy中用来创建N维数组的函数。
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
结果
[1 2 3 4 5]
掌握了如何创建一维数组后,我们来学习如何创建二维数组。把「序列中套了一个或多个序列」的数据结构作为参数传入np.array()函数里,会返回一个对应的二维数组。
3)N维数组的运算
我们将会从2个方向学习N维数组的计算:
1\ 数组和数的计算
当数组和数字进行计算的时候,NumPy会将该数字的计算过程应用到数组的所有元素上面。
示例中,在把数组arr和数字2相加时,arr中的每个元素都和2进行了运算:
# 使用import导入numpy,并使用"np"作为该模块的简写
import numpy as np
# 使用np.array()函数新建数组arr
arr = np.array([[0.2, 0.9], [0.5, 0.1], [0.1, 0.7]])
# 输出 arr+2 的运算结果
print(arr+2)
结果
[[2.2 2.9]
[2.5 2.1]
[2.1 2.7]]
相同形状数组的计算
当相同形状的数组进行计算时,运算也是在相应的元素上进行。
示例中,arrOne是一个2x3的二维数组,arrTwo也是一个2x3的二维数组。
在计算 arrOne-arrTwo 时,arrOne中每个元素都减去了在arrTwo中相对应位置的元素: