我有一个奇怪的问题,至少我无法解释这种行为的原因。
我生成一个随机值列表,其函数为rand_data
,如下所示。当我尝试使用min()
函数提取最小值时,它会返回整个列表,这使我相信它不是列表而是数组。
但是如果我尝试使用.min()
属性,则返回错误:
AttributeError: 'list' object has no attribute 'min'
这里发生了什么? x1
是列表还是数组?
最小的工作示例:
import numpy as np
def rand_data():
return np.random.uniform(low=10., high=20., size=(10,))
# Generate data.
x1 = [rand_data() for i in range(1)]
print min(x1)
print x1.min()
答案 0 :(得分:3)
你使用了列表理解:
x1 = [rand_data() for i in range(1)]
您现在拥有一个包含rand_data()
一个结果的Python列表对象。
由于rand_data()
使用numpy.random.uniform()
,这意味着你有一个包含 numpy数组的列表。
不要在这里使用列表理解,显然不是你想要的:
x1 = rand_data()
答案 1 :(得分:0)
import numpy as np
def rand_data(num_elements):
# numpy returns always an array with a defined number
# of elements specified by the size parameter
return np.random.uniform(low=10., high=20., size=num_elements)
#rand_data will automatically generate the random data for you
# simply specifying the number of elements to generate
x1 = rand_data(10)
print('Minimum value for {0} is {1}'.format(x1, min(x1)))