ada*_*sta 5 python random python-3.x
我正在尝试以区间[-5,-1]和[1,5]的方式随机创建一个矩阵。如何创建一个考虑到具有随机值的间隔(无0值)的矩阵?
我试图用randintnumpy和来做piecewise。在第一种情况下,不可能指示2个间隔,在第二种情况下,当值接近0(大于-1且小于1)时生成的随机数始终是相同的。
x=np.random.randint(-5,5,(2,3))
np.piecewise(x, [x <= 1, x >=-1 ], [np.random.randint(-5,-1), np.random.randint(1,5)])
Run Code Online (Sandbox Code Playgroud)
我想以这种方式使用没有0值的矩阵:
[-2,-3,-1
1,-2, 3]
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以创建一个随机的正矩阵,并将它按元素乘以一个随机符号:
np.random.randint(1,6,(2,3))*np.random.choice([-1,1],(2,3))
请记住,这仅在间隔大约为时才有效0,例如(-6,6)(0排除)。
一种选择是简单地将值0“重新映射”到边界之一:
import numpy as np
np.random.seed(100)
x = np.random.randint(-5, 5, (4, 8))
x[x == 0] = 5
print(x)
# [[ 3 3 -2 2 2 -5 -1 -3]
# [ 5 -3 -3 -3 -4 -5 3 -1]
# [-5 4 1 -3 -1 -4 5 -2]
# [-1 -1 -2 2 -4 -4 2 2]]
Run Code Online (Sandbox Code Playgroud)
或者您可以使用np.random.choice:
import numpy as np
np.random.seed(100)
np.random.choice(list(range(-5, 0)) + list(range(1, 6)), size=(4, 8))
print(x)
# [[ 3 3 -2 2 2 -5 -1 -3]
# [ 5 -3 -3 -3 -4 -5 3 -1]
# [-5 1 -3 -1 -4 5 -2 -1]
# [-1 -2 2 -4 -4 2 2 -5]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |