【发布时间】:2018-03-04 00:16:46
【问题描述】:
我对 Python 编程一点也不陌生,但我对 Numpy 模块完全陌生。我需要使用这个模块,因为它非常快速和高效。
假设我有一个名为noise 的数组,其定义如下:
noise = [[uniform(0, 1) for i in range(size)] for j in range(size)]
在 numpy 术语中,我相信它是这样定义的:
noise = np.uniform(0, 1, (size, size))
现在说我想生成一个新数组,它采用噪声数组并用函数function(i, j) 替换其元素中的每个元素noise[i][j]
使用 python 的内置列表理解,我会简单地说:
modified_noise = [[function(i, j) for i in range(size)] for j in range(size)]
我的问题是:如何使用 numpy 模块来做到这一点。
【问题讨论】:
-
使用列表理解有什么问题?看起来
function只适用于标量输入,对吧?没有办法为每个size*size(i,j) 对评估一次,是吗? -
我看不出
modified_noise与noise有什么关系。function只接受坐标作为参数,而不是noise。 -
顺便说一句,没有
np.uniform..noise = np.random.random_sample((size, size))是正确的表达方式。您似乎也对“替换每个元素”的概念感到困惑。 -
哦,是的,有一个
numpy.uniform。我使用了它,它实际上按预期工作。 -
另外,
modified_noise将从noise构造。这两者是相关的,但仅在函数function的定义内,在我的例子中是一个湍流函数(我称它为函数是为了给你一个更抽象的代码版本)
标签: python arrays performance numpy list-comprehension