【发布时间】:2020-05-03 14:43:56
【问题描述】:
我正在尝试通过以下方式创建一个 numpy 数组,其中的元素包含一些其他 numpy 数组的一些不断增加的元素的乘积:
import numpy as np
def foo(n):
return(365-n)/365
#lim is some integer greater than 0 and less than 365
lim = 50
x = np.arange(0, lim, 1)
#foo(n) is some function
y = foo(x)
z = np.zeros(np.shape(x))
#z is the variable I'm trying to create
for i in x:
z[i] = 1 - np.prod(y[0:i+1])
有人知道如何在不使用循环的情况下编写它吗?几乎每个人都建议我避免在 python 中使用循环,因为它效率低下,而且您可能会看到我不是一个非常熟练的程序员。
【问题讨论】:
-
当这是另一种选择时,您可能会避免使用 for-loop,因为您将使用数百次,因为没有其他选择,不要每次都扔掉 forloop
-
什么是
lim?foo是什么?你是对的,如果可能的话应该避免循环,但你需要一个minimal reproducible example,这样我们就可以实际处理它 -
@azro 我完全听不懂你在说什么,抱歉
-
I was advised to avoid using loops in python:当你可以的时候。但是数百次你会使用循环,因为那是如何解决问题的 -
某处会有一个
for循环,但他们可能指的是一个显式的python循环。如果可以将其作为向量化操作推入 numpy 中,那就更可取了