我对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))
现在说我想生成一个新的数组,它接受噪声数组并用函数noise[i][j]
替换其元素的每个元素function(i, j)
使用python的内置列表理解,我只想说:
modified_noise = [[function(i, j) for i in range(size)] for j in range(size)]
我的问题是:我怎么能用numpy模块做到这一点。
您可以使用np.fromfunction
:
modified_noise = np.fromfunction(lambda i, j: function(i, j), (size, size), dtype=float)
这通过在每个坐标上执行函数来构造数组。
您可以直接从列表列表构建一个numpy数组,例如:
np.array(modified_noise)
data = [[i * j for j in range(5)] for i in range(5)]
print(data)
import numpy as np
print(np.array(data))
[[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8], [0, 3, 6, 9, 12], [0, 4, 8, 12, 16]]
[[ 0 0 0 0 0]
[ 0 1 2 3 4]
[ 0 2 4 6 8]
[ 0 3 6 9 12]
[ 0 4 8 12 16]]