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

编写从列中选择随机值的循环-Python,python,arrays,python-3.x,numpy,random,Python,Arrays,Python 3.x,Numpy,Random,创建了具有(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循环中,并在显示输出的列数

创建了具有(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循环中,并在显示输出的列数(将使用.function)中拉入forn

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

这里的print语句是从问题中重用的,除了第一列之外,它使用for循环遍历所有列


(感谢雷内为我指出了正确的做事方法。)

让我们使用
形状
arange
随机。选择

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]

虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!
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]