创建一个具有(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)
答案 0 :(得分:1)
让我们使用shape
,arange
和random.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指出我正确的做事方式。)