所以这段代码只是将列表1,2,3,4(x4)随机化,然后将其写入文本文件并将其读回。它打印所有的16,但我想知道是否有一种方法使16个中的4组中的4组,然后我可以定义它并单独调用它们并且平均只取其中的4个。
import numpy
import random
members, n_groups = 4, 4
participants=list(range(1,members+1))*n_groups
print participants
random.shuffle(participants)
with open('myfile1.txt','w') as tf:
for i in range(n_groups):
group = participants[i*members:(i+1)*members]
for participant in group:
tf.write(str(participant)+' ')
tf.write('\n')
with open('myfile1.txt','r') as tf:
g = [map(int, line.split()) for line in tf.readlines()]
print g
print numpy.mean(g, axis=1)
对不起它有点笨拙,基本上想要取出它吐出的前4个数字的平均值!
谢谢!
新代码:
update-database -Migration initMigrationProduct -c ProductContext -Environment Production
由于某种原因仍无效?
答案 0 :(得分:1)
不是每行写一个数字,而是直接写一组数字。为此,您只需要从第2个删除write('\n')
并添加空格。
然后,您可以使用line.split()
直接上传每组4个成员(我添加了一个转换来检索int格式,但您可以将其更改为float或您需要的任何内容)。
使用numpy,您可以计算每个组的平均值。
给出了:
import numpy
import random
members, n_groups = 4, 4
participants= range(1,members+1)*n_groups
print participants
random.shuffle(participants)
with open('myfile1.txt','w') as tf:
for i in range(n_groups):
group = participants[i*members:(i+1)*members]
for participant in group:
tf.write(str(participant)+' ')
tf.write('\n')
with open('myfile1.txt','r') as tf:
g = [map(int, line.split()) for line in tf.readlines()]
print g
print numpy.mean(g, axis=1)
输出
# participants
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
# g
[[3, 3, 2, 2], [4, 1, 1, 4], [2, 2, 4, 3], [3, 1, 4, 1]]
# mean per group
[ 2.5 2.5 2.75 2.25]
新 myfile1.txt
3 3 2 2
4 1 1 4
2 2 4 3
3 1 4 1