创建一个大小为x的向量,其中两个数字随机划分

时间:2018-09-16 14:43:18

标签: python arrays random

我当前需要创建一个大小为x的数组,并用随机分配的1s或-1s填充它。我可以轻松地创建一个数组并用randint填充它,但是问题是我不希望数组中有0。

我还有数组长度的精确数字,因此我需要确保数组中总共有100或1000个整数。

如果有人知道如何顺利​​解决此问题,将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

正如@roganjosh在评论中提到的,您可以使用choice,一种替代方法是使用randint并移动边界,如下所示:

import numpy as np

a = (2 * np.random.randint(low=0, high=2, size=10)) - 1
print(a)

输出

[ 1  1  1 -1 -1 -1  1 -1  1  1]

基准

import timeit

print(timeit.timeit('a = (2 * np.random.randint(low=0, high=2, size=1000)) - 1', setup='import numpy as np', number=10000))
print(timeit.timeit('a = np.random.choice([-1, 1], 1000)', setup='import numpy as np', number=10000))

输出

0.10986099799993099
0.18005346000063582