Python:从函数和数组创建矩阵
我肯定以前有人问过这个问题,但我找不到解决办法(这个问题也必须有一个更好的标题-欢迎建议)。有没有一种更快的方法来做下面的事情?我想通过一个函数将数组元素映射到矩阵Python:从函数和数组创建矩阵,python,numpy,Python,Numpy,我肯定以前有人问过这个问题,但我找不到解决办法(这个问题也必须有一个更好的标题-欢迎建议)。有没有一种更快的方法来做下面的事情?我想通过一个函数将数组元素映射到矩阵 a = np.random.rand(100) b = np.random.rand(100) c = 5 matrix = np.zeros((100, 100)) for i in range(100): for j in range(100): matrix[i, j] = function(a[i]
a = np.random.rand(100)
b = np.random.rand(100)
c = 5
matrix = np.zeros((100, 100))
for i in range(100):
for j in range(100):
matrix[i, j] = function(a[i], b[j], c)
我试过这个,但不起作用:
matrix = np.fromfunction(lambda i, j: function(a[i], b[j], c), (100, 100), dtype=float) # Doesn't work
这也不是:
vfunction = np.vectorize(function)
matrix = vfunction(a, b, c) # Doesn't work
找到了一个利用此功能的相关解决方案:您能否介绍一下
功能
?这真的是一个不可向量化的操作吗?我使用的函数是“return1/(1+np.exp(-(a+b+c))”,它只接受3个数字。矢量化函数没有给我想要的矩阵。np.exp
与数组一起工作。您需要做的是找出如何从整个数组中计算a+b+c
,而不仅仅是从它们的元素中。无需进一步修改,该表达式将生成一个(100,)数组,该数组与a
和b
的常见形状相匹配。想想广播
。当前使用:a_=np.tile(a,(100,1)).T
<代码>b_u=np.tile(b,(100,1))<代码>矩阵=函数(a,b,c)。这是有效的,我不知道如何做得更好。