根据结构化数组python

时间:2015-11-19 01:12:15

标签: python arrays

我有一个表示位置(x,y)和颜色(r,g,b)的数组。现在,阵列全部变为零(应该如此)。我需要这样做,以便x和y的值是随机的并且< = 10。我需要使r,g和b的值也是随机的,但是< = 255。你如何指定只生成10个位置'对于' color'同样为255。

array = np.zeros(10, [ ('position', [ ('x', float, 1),
                                   ('y', float, 1)]),
                    ('color',    [ ('r', float, 1),
                                   ('g', float, 1),
                                   ('b', float, 1)])])

2 个答案:

答案 0 :(得分:1)

试试这个:

import random 
import numpy

array = numpy.zeros(10, [ ('position', [ ('x', float, 1),
                                   ('y', float, 1)]),
                    ('color',    [ ('r', float, 1),
                                   ('g', float, 1),
                                   ('b', float, 1)])])


ranPos = lambda: random.random() * 10
ranColor = lambda: random.random() * 255

for i in range(10):
    array[i] = ((ranPos(), ranPos()),
                (ranColor(), ranColor(), ranColor()))

如果要生成整数,请改为使用:

ranPos = lambda: random.randint(0,10)
ranColor = lambda: random.randint(0,255)

答案 1 :(得分:0)

使用np.random.randint。例如,要生成1到10的2x5整数数组,请使用:

In [8]: np.random.randint(1, 10, (2,5))
Out[8]: 
array([[7, 7, 5, 6, 3],
       [6, 3, 6, 8, 3]])

类似地,要生成从0到10的2x5形状的浮点数:

In [10]: 10*np.random.random((2,5))
Out[10]: 
array([[  9.50898995e+00,   5.67913201e+00,   7.77076899e+00,
          3.77030483e+00,   9.67766293e-01],
       [  9.93215775e+00,   6.40290706e+00,   9.70962150e+00,
          5.98875979e-03,   5.65110883e+00]])

np.random.randint上的文档可用herenp.random.random的文档为here

Python2

使用上述函数,我们可以生成所需形状的浮点数:

np.array(
    zip(10*np.random.random((10,2)),
    255*np.random.random((10,3))),
    [ ('position', [ 
         ('x', float, 1),
         ('y', float, 1)]),
         ('color',    [
               ('r', float, 1),
               ('g', float, 1),
               ('b', float, 1)])
         ]
)

Python3

通过一个小的改动,上面的工作在Py3下:

np.array(
    list(zip(10*np.random.random((10,2)),
    255*np.random.random((10,3)))),
    [ ('position', [ 
         ('x', float, 1),
         ('y', float, 1)]),
         ('color',    [
               ('r', float, 1),
               ('g', float, 1),
               ('b', float, 1)])
         ]
     )