0

到目前为止,我创建了 2 个分别标记为 x 和 y 的数据点列表。我不知道如何将它们组合成一个数组,以便它们是坐标。

import random
import pylab

x = [(random.randint(0,100)) for i in range(3000)]
y = [(random.randint(0,100)) for j in range(3000)]
4

4 回答 4

2

您可以将它们与zip()

zip(x, y)

或者您可以一起生成数字:

[(random.randint(0,100), random.randint(0,100)) for i in xrange(3000)]
于 2013-04-08T15:18:53.650 回答
1

我注意到您正在导入pylab. 如果您乐于使用NumPy数组作为坐标,您可以简单地编写:

import numpy.random
coord = numpy.random.randint(0, 100, (3000, 2))

不需要显式循环或列表推导。这使得代码比纯 Python 版本快约 120 倍:

In [6]: %timeit coord = numpy.random.randint(0, 100, (3000, 2))
10000 loops, best of 3: 82.7 us per loop

In [7]: %timeit coord = [(random.randint(0,100), random.randint(0,100)) for i in xrange(3000)]
100 loops, best of 3: 10.3 ms per loop
于 2013-04-08T15:22:34.117 回答
0

你可以使用zip

>>> x = [(random.randint(0,100)) for i in range(3000)]
>>> y = [(random.randint(0,100)) for j in range(3000)]
>>> coords = zip(x,y)
>>> len(coords)
3000
>>> type(coords[0])
<type 'tuple'>
>>> coords[0]
(54, 0)
>>> 
于 2013-04-08T15:18:05.013 回答
0

您可以将列表作为元组添加到包含坐标的新列表中:

import random
import pylab

XY=[]

x = [(random.randint(0,100)) for i in range(3000)]
y = [(random.randint(0,100)) for j in range(3000)]

for xg, yg in zip(x,y):
    XY.append((xg,yg))
于 2013-04-08T15:22:17.760 回答