我想基于等式在python numpy中生成一个数组; 1 / x代表x = 1,2,3,... 10和我写的;但我没有得到任何输出,请帮助
def Number(x):
for x in range (1,11):
y = 1/x
return y
y = Number(10)
print y
答案 0 :(得分:1)
如果要返回列表,则需要实际制作一个列表并附加到列表中(或使用列表推导)。您只需创建一个变量并分配给它。而是做:
def Number(x):
y = []
for x in range (1,11):
y.append(1./x)
return y
y = Number(10)
print y
现在,如果你愿意,你可以使用列表理解。这是一种在单行中生成列表的pythonic方法。它看起来像这样。
def Number(x):
y = [1./x for x in range(1,11)]
return y
y = Number(10)
print y
另一种方法是使用内置的map,这在python 3中是不同的,但你使用的是2.7,所以我们很好。
def Number(x):
y = map(lambda x: 1./x, range(1,11))
return y
y = Number(10)
print y
map函数将函数应用于指定列表。在这种情况下,我使用匿名lambda函数lambda x:1./x
,这是一种用x作为参数编写函数的简单方法,并返回1 / x。 map函数将lambda函数应用于列表中的每个元素。
答案 1 :(得分:1)
这可以按照以下方式完成
def Number(n):
return np.array([1/i for i in range(1, n)])
现在你可以这样做
y = Number(10)