制作一个由 1x3 随机数数组组成的 NxN 数组 (python)
Make a NxN array of 1x3 arrays of random numbers (python)
有没有办法制作一个 NxN 数组(所以是二维数组)的元素,其中每个元素都是一个由 3 个数字组成的数组,这些数字在 0 和 1 之间随机选择?
输出应如下所示:
(0.2,0.45,0.98), (0.7,0.58,0.11) ...
(1.0,0.05,0.63, ...
.
.
.
等等
我一直在尝试这样做,但一定有更优雅的方法。代码如下:
import numpy as np
import matplotlib.pyplot as plt
lat = []
for _ in range(2):
w = []
for _ in range(2):
a = np.random.uniform(0.0,1.0)
b = np.random.uniform(0.0,1.0)
c = np.random.uniform(0.0,1.0)
D = np.array([a,b,c])
w.append(D)
lat.append(w)
if _ >= 1:
np.hstack(lat)
您可以使用 numpy.random.rand
,其中第一个参数是您要生成的行数,然后第二个参数可以是 3
在您的情况下每一行。
>>> import numpy as np
>>> np.random.rand(10,3)
array([[ 0.80325895, 0.70250496, 0.4256057 ],
[ 0.28863352, 0.14066084, 0.08918333],
[ 0.52669678, 0.07641594, 0.92869148],
[ 0.40105226, 0.88909989, 0.25459293],
[ 0.8202674 , 0.34435551, 0.49131868],
[ 0.14251546, 0.51029693, 0.54037975],
[ 0.07118544, 0.95467079, 0.87722367],
[ 0.33530285, 0.64395738, 0.8289817 ],
[ 0.5461907 , 0.93165573, 0.73256816],
[ 0.31204938, 0.38230589, 0.49739997]])
您可以使用 numpy.reshape 重塑随机生成的数字。
>>> N = 3
>>> np.random.rand(N*N*3).reshape([N,N,3])
array([[[ 0.48513983, 0.49582462, 0.96211702],
[ 0.95061997, 0.63674441, 0.51228963],
[ 0.06988701, 0.9018317 , 0.63418989]],
[[ 0.31213247, 0.75325276, 0.04600117],
[ 0.23449785, 0.04731562, 0.89007085],
[ 0.25746369, 0.96337201, 0.6032985 ]],
[[ 0.2207508 , 0.43560328, 0.75067189],
[ 0.84054857, 0.28190793, 0.08875157],
[ 0.00419059, 0.13464854, 0.63074635]]])
结果是一个由 3 个数字组成的二维数组。
>>> temp = np.random.rand(N*N*3).reshape([N,N,3])
>>> temp[0][0]
array([ 0.48513983, 0.49582462, 0.96211702])
有没有办法制作一个 NxN 数组(所以是二维数组)的元素,其中每个元素都是一个由 3 个数字组成的数组,这些数字在 0 和 1 之间随机选择?
输出应如下所示:
(0.2,0.45,0.98), (0.7,0.58,0.11) ...
(1.0,0.05,0.63, ...
.
.
.
等等
我一直在尝试这样做,但一定有更优雅的方法。代码如下:
import numpy as np
import matplotlib.pyplot as plt
lat = []
for _ in range(2):
w = []
for _ in range(2):
a = np.random.uniform(0.0,1.0)
b = np.random.uniform(0.0,1.0)
c = np.random.uniform(0.0,1.0)
D = np.array([a,b,c])
w.append(D)
lat.append(w)
if _ >= 1:
np.hstack(lat)
您可以使用 numpy.random.rand
,其中第一个参数是您要生成的行数,然后第二个参数可以是 3
在您的情况下每一行。
>>> import numpy as np
>>> np.random.rand(10,3)
array([[ 0.80325895, 0.70250496, 0.4256057 ],
[ 0.28863352, 0.14066084, 0.08918333],
[ 0.52669678, 0.07641594, 0.92869148],
[ 0.40105226, 0.88909989, 0.25459293],
[ 0.8202674 , 0.34435551, 0.49131868],
[ 0.14251546, 0.51029693, 0.54037975],
[ 0.07118544, 0.95467079, 0.87722367],
[ 0.33530285, 0.64395738, 0.8289817 ],
[ 0.5461907 , 0.93165573, 0.73256816],
[ 0.31204938, 0.38230589, 0.49739997]])
您可以使用 numpy.reshape 重塑随机生成的数字。
>>> N = 3
>>> np.random.rand(N*N*3).reshape([N,N,3])
array([[[ 0.48513983, 0.49582462, 0.96211702],
[ 0.95061997, 0.63674441, 0.51228963],
[ 0.06988701, 0.9018317 , 0.63418989]],
[[ 0.31213247, 0.75325276, 0.04600117],
[ 0.23449785, 0.04731562, 0.89007085],
[ 0.25746369, 0.96337201, 0.6032985 ]],
[[ 0.2207508 , 0.43560328, 0.75067189],
[ 0.84054857, 0.28190793, 0.08875157],
[ 0.00419059, 0.13464854, 0.63074635]]])
结果是一个由 3 个数字组成的二维数组。
>>> temp = np.random.rand(N*N*3).reshape([N,N,3])
>>> temp[0][0]
array([ 0.48513983, 0.49582462, 0.96211702])