二维数组由多个一维数组组成
np.size :数组中所有元素的总量,相当于数组的 shape 中所有元素的乘积,例如矩阵的元素总量为行与列的乘积。
>>>print('数组a的大小是:',a.size)
>>>print('数组b的大小是:',b.size)
>>>print('数组c的大小是:',c.size)
数组a的大小是: 3
数组b的大小是: 9
数组c的大小是: 12
np.array创建数组时,会将多层嵌套的列表转换为多维数组。
>>>b = np.array([(1.5,2,3), (4,5,6)])
>>>b
array([[1.5, 2. , 3. ],
[4. , 5. , 6. ]])
创建数组时我们还可以指定数据类型
>>>c = np.array( [ [1,2], [3,4] ], dtype=complex )#指定数据类型为复数
>>>c
array([[1.+0.j, 2.+0.j],
[3.+0.j, 4.+0.j]])
我们经常遇到这样的情况,我们并不知道数组的元素,但是知道数组的大小。因此,NumPy提供了多个函数,用于创建有初始数值的占位数组,这样可以减少不必要的数组增长及运算成本。
zeros 函数创建包含全是0的数组, ones 函数创建全是1的数组, empty 函数创建一个随机数值数组,其中的数值由当时的内存状态决定。这些函数创建的数组的数据类型都是默认的float64.
打印数组
当你在屏幕打印一个数组时,NumPy显示这个数组的方式和嵌套的列表是相似的。但遵守以下布局:
最后一维由左至右打印
倒数第二维从上到下打印
其余维都是从上到下打印,且通过空行分隔
如下所示,一维数组输出为一行、二维为矩阵、三维为矩阵列表。
基本运算
数组中的算术运算一般是元素级的运算,运算结果会产生一个新的数组。
不同于很多矩阵语言,乘积运算操作 * 在NumPy中是元素级的运算。如果想要进行矩阵运算,可以使用 dot 函数或方法。
当操作不同数据类型的数组时,最后输出的数组类型一般会与更普遍或更精准的数组相同(这种行为叫做 Upcasting)。
默认状态下,这些运算会把数组视为一个数字列表而不关心它的shape。然而,可以指定axis参数针对哪一个维度进行运算。例如axis=0将针对每一个列进行运算。
索引、切片和迭代
一维数组可以索引、切片和迭代,就像列表和其他python数据类型。
b[i] 中的i代表i后面有足够多的:,用于表示其他维度的索引。你也可以使用点号 ... 来表示。
点号代表需要的足够多的列,用于使其他维度的索引值完整。例如,x是一个五维数组,那么
x[1,2,...] 相当于 x[1,2,:,:,:]
x[...,3] 相当于 x[:,:,:,:,3]
x[4,...,5,:] 相当于 x[4,:,:,5,:]
但是,如果你想迭代输出数组中的每一个元素,你可以使用 flat 属性实现,这个属性生成一个可以迭代所有元素的迭代器。
进群:125240963 即可获取数十套PDF1哦!
网友评论