如何应用一个函数所有numpy数组元素

时间:2018-05-21 22:01:22

标签: python numpy

我有一个整数的numpy数组。

当我的python脚本开始执行时,numpy数组由全零组成。

我想将以下函数应用于数组中的每个元素:

a [i] = i * 2.0

在该函数中,i是数组索引,而[i]是该索引处的元素。

如何以矢量化方式执行此操作(尽可能快地在python中编写显式循环)?

我知道怎么做乘法。问题是我不知道如何以矢量化方式获取数组索引。

编辑:

我从C DLL获取指向数组缓冲区的指针。然后我使用np.ctypeslib.as_array从C DLL返回的内存缓冲区指针构造一个numpy数组。

我需要更新C DLL返回的内存缓冲区指针的内容,我认为我可以使用numpy快速完成。

2 个答案:

答案 0 :(得分:0)

使用arange构建所需值的数组,并将值分配给要填充的数组:

a[:] = numpy.arange(0, len(a)*2, 2)

答案 1 :(得分:-1)

my_array是你的零数组:

map(lambda x, i: x + i*2.0, my_array, np.arange(0,len(my_array))

请注意,map()函数的行为会有所不同,具体取决于您是使用Python2还是Python3。在Python2中,您将返回一个列表。在Python3中,返回一个可迭代的(如果我没记错的话,它有懒惰的eval)。您可以使用list()函数轻松地将此iterable转换为列表。