如何生成数组

时间:2017-12-01 23:15:30

标签: python

我想基于等式在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 

2 个答案:

答案 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)