2017-08-16 39 views
1

创建与(170,10)的2D阵列形状写入从列选择随机值的环路 - 的Python

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

想要写一个循环,从每列的动产无需更换 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循环中拉了ñ与显示输出的列数(会用。功能为)

回答

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] 
0
for n in xrange(np.shape(i)[-1]): 
    print np.random.choice(i[:, n], 5,replace=False) 

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

此处的打印语句从问题中重用,除了第一列以外,它使用for循环遍历所有列。

(感谢雷指着我做事的正确方法。)

+1

尽管此代码片段可以解决这个问题,[包括解释](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)真的有助于改进请提供您的帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性注释来挤占代码,这会降低代码和解释的可读性! – rene