【发布时间】:2018-08-27 00:21:03
【问题描述】:
假设我们有一个数组,
arr = np.random.rand(3,3)
通常在将函数映射到数组时,我们只对数组元素的值感兴趣,即
f = lambda val : val**2
arr_squared = f(arr)
但是如果我们函数的输出取决于输入值在数组中的位置,即
f = lambda x,y,val : x*y*val
现在我正在使用 meshgrids 和 ravel。
X, Y = np.arange(arr.shape[0]), np.arange(arr.shape[1])
X, Y = np.meshgrid(X,Y)
result = np.zeros(arr.shape)
for x,y in zip(np.ravel(X), np.ravel(Y)):
result[x,y] = f(x,y,arr[x,y])
这可行,但速度很慢。我很难弄清楚是否有更好/更快的方法来做到这一点,并且在线搜索没有产生太多有用的信息。
【问题讨论】:
标签: python arrays numpy dictionary mapping