numpy如何对数组的每个元素进行批量操作

时间:2020-09-26 14:44:41

标签: python arrays numpy bulk

我有一个numpy数组

[
 [1,5,6],
 [10,12,20]
]

我想对数组的每个元素执行一个操作,获取当前元素值并执行一个操作。类似于np.square函数之类的批量操作。

即x =(x +1)* 2 结果将是:

[
 [4,12,14],
 [22,26,42]
]

我知道我可以为每个元素做一个for循环并应用该操作,但是我想要更紧凑的语法。

2 个答案:

答案 0 :(得分:3)

您可以使用numpy:

//Thread.Sleep(5000);
await Task.Delay(5000);

所需的输出:

import numpy as np

lst = [
    [1, 5, 6],
    [10, 12, 20]
]

lst = np.array(lst)
lst = (lst + 1) * 2
print(lst)

如果最后希望将其作为列表,则可以将其转换回去,但是[[ 4 12 14] [22 26 42]] 数组很棒。

答案 1 :(得分:2)

使用numpy vectorize解决方案:

# define numpy array
arr = np.array([
 [1,5,6],
 [10,12,20]
])

# create function
func = np.vectorize(lambda x: (x + 1) * 2)

# apply function to array
func(arr)