我有一个整数的numpy数组。
当我的python脚本开始执行时,numpy数组由全零组成。
我想将以下函数应用于数组中的每个元素:
a [i] = i * 2.0
在该函数中,i是数组索引,而[i]是该索引处的元素。
如何以矢量化方式执行此操作(尽可能快地在python中编写显式循环)?
我知道怎么做乘法。问题是我不知道如何以矢量化方式获取数组索引。
编辑:
我从C DLL获取指向数组缓冲区的指针。然后我使用np.ctypeslib.as_array从C DLL返回的内存缓冲区指针构造一个numpy数组。
我需要更新C DLL返回的内存缓冲区指针的内容,我认为我可以使用numpy快速完成。
答案 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转换为列表。