【发布时间】:2014-10-19 22:24:17
【问题描述】:
我有一个这样的文本文件:
abc 4 2 3 4 1 4 1 2 3 3
abc 4 2 3 4 1 4 1 2 3 3
def 4 3 3 4 1 4 1 2 3 3
def 4 3 3 4 1 4 1 2 3 3
ghi 4 5 3 4 1 4 1 2 3 3
ghi 4 5 3 4 1 4 1 2 3 3
jkl 4 6 3 4 1 4 1 2 3 3
jkl 4 6 3 4 1 4 1 2 3 3
mno 4 8 3 4 1 4 1 2 3 3
mno 4 8 3 4 1 4 1 2 3 3
我想将列中的数据随机替换为 0,作为第 1 列中给出的标识符。每个标识符有两行。我想用 0 随机替换两行。我将每一列放入一个列表中,然后随机选取一个奇数,n 次所需的次数,然后将该索引和之前的索引替换为 0。
我的代码看起来像
for i in range(1,11): #The file has 11 columns
for line in open("structure.tsv",'r'):
splitFile=line.strip().split("\t")
temp_array.append(splitFile[i])
for x in random.sample(range(1,10),3): #Replace values for any three identifiers randomly
temp_array[x]=0
temp_array[x-1]=0
print temp_array
temp_array=[]
我得到如下输出:
[0, 0, '4', '4', '4', '4', 0, 0, 0, 0]
[0, 0, 0, 0, '5', '5', '6', '6', 0, 0]
['3', '3', 0, 0, 0, 0, 0, 0, '3', '3']
['4', '4', 0, 0, 0, 0, 0, 0, '4', '4']
[0, 0, '1', '1', '1', '1', 0, 0, 0, 0]
['4', '4', 0, 0, '4', '4', 0, 0, 0, 0]
['1', '1', 0, 0, 0, 0, 0, 0, '1', '1']
[0, 0, '2', '2', 0, 0, 0, 0, '2', '2']
[0, 0, 0, 0, 0, 0, '3', '3', '3', '3']
[0, 0, '3', '3', 0, 0, 0, 0, '3', '3']
但我希望输出类似于输入文件的输出。
abc 0 0 3 4 0 4 1 0 0 0
abc 0 0 3 4 0 4 1 0 0 0
def 4 0 0 0 1 0 0 2 0 3
def 4 0 0 0 1 0 0 2 0 3
ghi 4 5 0 0 1 4 1 0 0 0
ghi 4 5 0 0 1 4 1 0 0 0
jkl 0 6 0 0 0 0 0 0 3 0
jkl 0 6 0 0 0 0 0 0 3 0
mno 0 0 3 4 0 0 0 2 3 3
mno 0 0 3 4 0 0 0 2 3 3
【问题讨论】:
-
具有相同字符串的两行会有不同的数字吗?
-
是的......标识符的数字可能不同......
-
你能给我们举个例子,说明你希望你的输出是什么样的吗?我不太明白你想要什么最终结果。
标签: python list matrix multidimensional-array