编辑:
由于我的问题表达得不好,我决定重写它。
numpy是否允许在不使用Python标准列表理解的情况下使用函数创建数组?
有了列表理解功能,我可以:
array = np.array([f(i) for i in range(100)])
具有给定功能。
但是,如果构造的数组真的很大,那么使用Python的列表将很慢,并且会占用大量内存。
如果这种方法不存在,我想我可以先创建一个想要的大小的数组
array = np.arange(100)
然后在其上映射一个函数。
array = f(array)
According to results from another post,看来这是一个合理的解决方案。
假设我要使用具有简单int值的add函数,如下所示:
array = np.array([i for i in range(5)])
array + 5
但是现在,如果我希望该值(此处为5)随着数组元素的索引而变化,该怎么办?例如操作:
array + [i for i in range(5)]
我可以使用哪个对象为矢量化操作中的变量值定义特殊规则?
答案 0 :(得分:0)
答案 1 :(得分:0)
对于您的特定示例,陪审团操纵的解决方案是使用numpy.arange()
,如下所示:
In [4]: array + np.arange(5)
Out[4]: array([0, 2, 4, 6, 8])
通常,您可以找到一些可以执行自定义函数的numpy ufunc,也可以在python函数中进行编写,然后返回一个ndarray,例如:
def custom_func():
# code for your tasks
return arr
然后您可以像下面这样简单地将返回的结果添加到已经定义的array
中:
array + cusom_func()