NumPy数组的维数
NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推。在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是NumPy中的轴(axes),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。
fromfunction(func, (shape)) 与 lambda 函数
匿名函数 lambda:是指一类无需定义标识符(函数名)的函数或子程序。
lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。
以下面的实例(1)来解释 fromfunction(func, (shape))函数:
1.并没有各个坐标迭代多次调用函数,实际上只调用了一次函数;
2.传入的参数是各个维度的坐标数组。例如 shape 是3x3的数组,传入的第一个参数是:
[[0,0,0],
[1,1,1],
[2,2,2]]
第二个参数是:
[[0,1,2],
[0,1,2],
[0,1,2]]
3.传入各个维的坐标数组之后,剩下的就是数组计算了。
(1)依据自定义函数创建数组
>>> np.fromfunction(lambda i, j: i + j, (3, 3))
# array([[0., 1., 2.],
[1., 2., 3.],
[2., 3., 4.]])
(2)使用 NumPy 打印九九乘法表
>>> np.fromfunction(lambda i, j: (i + 1) * (j + 1), (9, 9))
# array([[ 1., 2., 3., 4., 5., 6., 7., 8., 9.],
[ 2., 4., 6., 8., 10., 12., 14., 16., 18.],
[ 3., 6., 9., 12., 15., 18., 21., 24., 27.],
[ 4., 8., 12., 16., 20., 24., 28., 32., 36.],
[ 5., 10., 15., 20., 25., 30., 35., 40., 45.],
[ 6., 12., 18., 24., 30., 36., 42., 48., 54.],
[ 7., 14., 21., 28., 35., 42., 49., 56., 63.],
[ 8., 16., 24., 32., 40., 48., 56., 64., 72.],
[ 9., 18., 27., 36., 45., 54., 63., 72., 81.]])