编写一个从列中选择随机值的循环 - Python

时间:2017-08-16 19:51:10

标签: python arrays python-3.x numpy random

创建一个具有(170,10)形状的二维数组

i = np.array(range(1,1701)).reshape(170,10)

想要编写一个循环,从i的每列(或 n 列数)中选择5个随机值无需替换,输出如下:

Group 1: [  7  37 124  41  17]
Group 2: [302 261 257 323 234]
Group 3: [464 486 463 440 474]

到目前为止,我可以从单个列中提取随机值:

print(np.random.choice(i[:,0],5 ,replace=False))

如何将其置于for循环中并使用显示的输出拉出 n 列数(将使用.function)

2 个答案:

答案 0 :(得分:1)

让我们使用shapearangerandom.choice

for c in np.arange(i.shape[1]-1):
    print('Group {}: '.format(str(c+1)) + str(np.random.choice(i[:,c],5,replace=False)))

输出:

Group 1: [1521  231  671  801  711]
Group 2: [ 612  192 1172 1242 1322]
Group 3: [ 543  213 1453  723  973]
Group 4: [ 404 1334  474  294 1044]
Group 5: [1615 1455 1025 1665 1395]
Group 6: [1116 1336 1086 1626  536]
Group 7: [367 347 887 297 237]
Group 8: [1088 1188 1288   58  608]
Group 9: [1439 1289  869  349 1589]

答案 1 :(得分:0)

for n in xrange(np.shape(i)[-1]):
     print np.random.choice(i[:, n], 5,replace=False)

这里是列数; np.shape [-1]将给出总列数; xrange是一个生成器对象,它将通过循环生成列数。

这里的print语句是从问题中重用的,除了第一列,它通过所有列,使用for循环。

(感谢rene指出我正确的做事方式。)