Python 如何在循环中读取a1、a2和a3?
我有一个问题,我需要随机化数组中的值,但我需要在数组外部声明a1、a2和a3,因为a1、a2和a3需要等于100。但是当我这么做的时候,就不能随机化了。。循环保持执行相同的随机值Python 如何在循环中读取a1、a2和a3?,python,numpy,random,Python,Numpy,Random,我有一个问题,我需要随机化数组中的值,但我需要在数组外部声明a1、a2和a3,因为a1、a2和a3需要等于100。但是当我这么做的时候,就不能随机化了。。循环保持执行相同的随机值 a3=random.randint(0,1) a2=random.randint(0,50) a1=100-a2-a3 random_array = np.array([np.array([ a2, a1, a3]) for _ in range(x)]) 下面是我得到的结果: [ 6 94 0] [ 6
a3=random.randint(0,1)
a2=random.randint(0,50)
a1=100-a2-a3
random_array = np.array([np.array([ a2, a1, a3]) for _ in range(x)])
下面是我得到的结果:
[ 6 94 0]
[ 6 94 0]
[ 6 94 0]
[ 6 94 0]
[ 6 94 0]
[ 6 94 0]
[ 6 94 0]
[ 6 94 0]
[ 6 94 0]
如果希望每次获得不同的随机值,则需要在循环内调用
randint
random_array = []
for _ in range(x):
a3=random.randint(0,1)
a2=random.randint(0,50)
a1=100-a2-a3
random_array.append([a2, a1, a3])
正如hpaulj的注释一样,Numpy的随机函数可以返回Numpy数组。这可以消除任何显式循环的需要
import numpy as np
n=10
a3 = np.random.randint(0,2, n) # The upper limit is exclusive so randint(0,1) is always 0
a2 = np.random.randint(0,50, n)
a1 = 100-a2-a3
a1
# array([77, 72, 81, 57, 84, 60, 97, 54, 52, 86])
a2
# array([23, 27, 19, 42, 16, 39, 2, 45, 48, 14])
a3
# array([0, 1, 0, 1, 0, 1, 1, 1, 0, 0])
如果需要阵列的阵列,请执行以下操作:
np.stack((a1,a2,a3), axis=1)
# array([[77, 23, 0],
# [72, 27, 1],
# [81, 19, 0],
# [57, 42, 1],
# [84, 16, 0],
# [60, 39, 1],
# [97, 2, 1],
# [54, 45, 1],
# [52, 48, 0],
# [86, 14, 0]])
a3=random.randint(0,1100)
生成100个随机值。