如何使用修改后的元素从另一个列表中使用numpy创建列表

问题描述 投票:2回答:2

我对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模块做到这一点。

python arrays performance numpy list-comprehension
2个回答
2
投票

您可以使用np.fromfunction

modified_noise = np.fromfunction(lambda i, j: function(i, j), (size, size), dtype=float)

这通过在每个坐标上执行函数来构造数组。

相关:How can I use a range inside numpy.fromfunction?


0
投票

您可以直接从列表列表构建一个numpy数组,例如:

Code:

np.array(modified_noise)

Test Code:

data = [[i * j for j in range(5)] for i in range(5)]
print(data)

import numpy as np
print(np.array(data))

Results:

[[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]]
© www.soinside.com 2019 - 2024. All rights reserved.