使用可变值的Numpy广播

2024-03-28 20:47:45 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:

由于我的问题表述不当,我决定重写。你知道吗

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)]

我可以使用什么对象为向量化操作中的变量值定义特殊规则?你知道吗


Tags: 方法函数内存innumpy编辑列表for
2条回答

可以这样将两个数组添加到一起:

Simple adding two arrays using numpy in python?

这假设“按索引变量”只是另一个数组。你知道吗

对于您的特定示例,操纵陪审团的解决方案是使用^{},如下所示:

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()

相关问题 更多 >