我当前需要创建一个大小为x的数组,并用随机分配的1s或-1s填充它。我可以轻松地创建一个数组并用randint填充它,但是问题是我不希望数组中有0。
我还有数组长度的精确数字,因此我需要确保数组中总共有100或1000个整数。
如果有人知道如何顺利解决此问题,将不胜感激。
谢谢
答案 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