use*_*022 49 python arrays numpy
我希望能够在运行中"构建"一个numpy数组,我不知道这个数组的大小.
例如,我想做这样的事情:
a= np.array()
for x in y:
a.append(x)
Run Code Online (Sandbox Code Playgroud)
这将导致包含x的所有元素,显然这是一个简单的答案.我只是好奇这是否可能?
Fre*_*Foo 87
构建一个Python列表并将其转换为Numpy数组.对于转换为数组,需要按每次附加的O(1)时间+ O(n)进行分摊,总计为O(n).
a = []
for x in y:
a.append(x)
a = np.array(a)
Run Code Online (Sandbox Code Playgroud)
ale*_*sdm 13
你可以这样做:
a = np.array([])
for x in y:
a = np.append(a, x)
Run Code Online (Sandbox Code Playgroud)
由于y是可迭代的,所以我真的不明白为什么要追加的调用:
a = np.array(list(y))
Run Code Online (Sandbox Code Playgroud)
会做,而且速度更快:
import timeit
print timeit.timeit('list(s)', 's=set(x for x in xrange(1000))')
# 23.952975494633154
print timeit.timeit("""li=[]
for x in s: li.append(x)""", 's=set(x for x in xrange(1000))')
# 189.3826994248866
Run Code Online (Sandbox Code Playgroud)