【发布时间】:2012-03-14 15:05:54
【问题描述】:
是否可以从函数构造numpy 矩阵?在这种情况下,函数是两个向量的绝对差:S[i,j] = abs(A[i] - B[j])。一个使用常规 python 的最小工作示例:
import numpy as np
A = np.array([1,3,6])
B = np.array([2,4,6])
S = np.zeros((3,3))
for i,x in enumerate(A):
for j,y in enumerate(B):
S[i,j] = abs(x-y)
给予:
[[ 1. 3. 5.]
[ 1. 1. 3.]
[ 4. 2. 0.]]
如果有一个看起来像这样的结构会很好:
def build_matrix(shape, input_function, *args)
我可以通过它的参数传递一个输入函数,并保留 numpy 的速度优势。
【问题讨论】:
-
这是可能的。你试过什么?
-
@Marcin - 如问题所述,我现在正在使用普通的旧 python 方法来填充矩阵。查看 numpy 的文档表明函数
vectorize可能有用,但我仍然没有看到如何从函数中构造矩阵。如果您能指出我正确的方向(文档方面),我将不胜感激! -
这在普通 python 中应该是可能的。您尝试过什么来创建 build_matrix 函数?你肯定有一些东西,但被困在某个地方,而不是希望有人会为你写这一切。
-
@marcin 我认为您误解了这个问题。我有一个可行的解决方案,一个不使用
numpy(已发布)的解决方案。我在文档中查看,找到了一个从参数创建 numpy 数组的函数,但 没有找到它。我正在 寻找 本地 numpy 调用,以便我可以编写自己的build_matrix函数,而不是“让别人为我写这一切”。问题是使用 numpy 的内部矢量化表示时获得的速度。