Numpy多维数组 用np.fromfunction()函数创建数组 解析

import numpy as np


f = lambda m, n: n + 10 * m
A = np.fromfunction(f, (6, 6), dtype=int)


print(A)

运行结果:

 解析:

f = lambda m, n: n + 10 * m

m, n 是lambda的两个参数,冒号后面 n + 10 * m 是返回值

A = np.fromfunction(f, (6, 6), dtype=int)

参数(6, 6)表示 m 的取值范围是[0, 1, 2, 3, 4, 5], n的取值范围是[0, 1, 2, 3, 4, 5]

数组A反应的是 m, n分别取值范围从 [0, 1, 2, 3, 4, 5] 时,n + 10 * m的值

把m和n代入 n + 10 * m,可得下列数组:

[[ 0  1  2  3  4  5]
 [10 11 12 13 14 15]
 [20 21 22 23 24 25]
 [30 31 32 33 34 35]
 [40 41 42 43 44 45]
 [50 51 52 53 54 55]]

用excel做个表格看着更明显:

 举例1:

import numpy as np


def func(i):
    return i * 2


a = np.fromfunction(func, (5,), dtype=int)
print(a)

使用 fromfunction() 函数,创建一个数组 a,看 a 返回的的结果,所以a中存储的就是 i * 2 的值,而 i 其实就是数组的索引,数组 a 反应的是 i 取值从0到1时,i * 2的值。fromfunction的第二个参数定义了数组的形状,也就是说参数(5,)表示 i 取值范围是[0,1,2,3,4]

所以 i * 2 的值就是[0, 2, 4, 6, 8]

 

 举例2:

假如要创建的是二维数组,也就是说函数有变量

import numpy as np


def func2(i, j):
    return i * j


B = np.fromfunction(func2, (10, 10), dtype=int)
print(B)

参数(10, 10)表示 i 的取值范围是 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], j 的取值范围是 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

数组B反应的是 i, j分别取值范围从 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 时,i * j 的值

把 i 和 j 的值代入到 i * j,得到如下数组:

[[ 0  0  0  0  0  0  0  0  0  0]
 [ 0  1  2  3  4  5  6  7  8  9]
 [ 0  2  4  6  8 10 12 14 16 18]
 [ 0  3  6  9 12 15 18 21 24 27]
 [ 0  4  8 12 16 20 24 28 32 36]
 [ 0  5 10 15 20 25 30 35 40 45]
 [ 0  6 12 18 24 30 36 42 48 54]
 [ 0  7 14 21 28 35 42 49 56 63]
 [ 0  8 16 24 32 40 48 56 64 72]
 [ 0  9 18 27 36 45 54 63 72 81]]

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值