我有一个表示位置(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)])])
答案 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
上的文档可用here,np.random.random
的文档为here。
使用上述函数,我们可以生成所需形状的浮点数:
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)])
]
)
通过一个小的改动,上面的工作在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)])
]
)