如何将 'n' 数组保存到 'n' npy 文件?
How to save 'n' arrays to 'n' npy files?
我的文件中有这样的字符串:
tactccctccatcccataatataagacatggtcaaacttggcacggtcttcaaaactaatctttaacttttaatttctca
gttggtatcagaggagtggtcctcggaggtttccgcgacggcgccgtccaccaaaccttccgtgcagacgcgtctgctgc
tgttatggtgggtaaaacatatgaaaggcggcccaagcagcccataggccaggccacgccatgagatcaagattaaaggg
tgttcaggccagcaatggacagtttccgggcactgtgccggctccgcgcgcctcggtcccggctcgcgctcgcgcgctcg
cgttatcagcacgagctgcctaagctaatagatactaaaaaaaaatttctgataaaaaaccatatttattatcgactcat
aaagtggtatcagagcttgaagatcctaaagatggcgagtaacaatgttcccttccaagtcccggtgctcacaaagagca
tggtatcagacagccgatcacaagcttccgctccctaacccatcgccgacgacctcaccggccaccacatcctcttctcc
gctggaatagctcagttggttagagcgtgtggctgttaaccacaaggtcggaggttcaagccctccttctagcgcttttt
gagcactgctcccgtccagcaaacggtaccccaggtaccggtaccccggtacgaaacttaatctgaccattgaattagag
gtgttaacccagatcaaatgcctcgttccctgggccgcctcattgtgaggggaagtattgcgacaagtcactaactcttc
cttgagcagagagttgctcattggaatactacaatattcatatattttactggagcttctaaacggattccttcaccatg
aagtgtgatgattggaggtgtgcgggttcgagcgctgtacaactacaccggagaggagcctgatgagctctccttcaaat
gtccactgacctgtaatagagaactggattgctcatgagaccccgatcgttcacttgtaatacattgatagttttcttta
atcaacgggagatgtccaagaccgaataactaagcgaattagtttggacttatcagcgaaatttcagtgatgctgaaagc
aaaatcagtttatcaacgggagatgtccaagaccgaataactaagcgaattagtttggacttatcagcgaaatttcagtg
ctactatgtttaaaaatatgttgaacaaaaaattctctctgttaaaaaaaacagttgggaaatatttttcgaacaattaa
gtaatagccagtcgcacctctactgtactcgaaatacatgtcagtgagattaacattcattattctgaccagacggctta
ttggccatcaaatgagggaaacaggccagctcctcgacaaaaaaagtggcatgagatttatcaaaggattgagaaatgcc
我需要 one-hot encode 每行并保存到一个 numpy 二进制文件。我为任务写了这个函数。
def ohe(padded_file):
integer_encoder = LabelEncoder()
one_hot_encoder = OneHotEncoder(categories='auto')
input_features = []
with open(padded_file, 'r') as padded:
padded = padded.readlines()
arr_nums = [i for i in range(len(padded))]
for linha in padded:
linha = linha.strip()
integer_encoded = integer_encoder.fit_transform(list(linha))
integer_encoded = np.array(integer_encoded).reshape(-1, 1)
one_hot_encoded = one_hot_encoder.fit_transform(integer_encoded)
stacked = np.stack(one_hot_encoded.toarray())
input_features.append(stacked)
np.savez_compressed("seq_arrays.npz", *input_features)
它可以工作,但是如果我需要处理一个更大的文件,其中包含数千行和更长的字符串,这取决于计算机的 RAM 容量,它无法完成这项工作。因此,对于后一种情况,我想我可以为每一行编写一个 numpy 二进制文件,然后加入同一个压缩文件,或者甚至将它们放在一个目录中,以便在必要时使用。 WRT,我做了以下事情:
def ohe(padded_file):
integer_encoder = LabelEncoder()
one_hot_encoder = OneHotEncoder(categories='auto')
with open(padded_file, 'r') as padded:
padded = padded.readlines()
arr_nums = [i for i in range(len(padded))]
for linha in padded:
linha = linha.strip()
integer_encoded = integer_encoder.fit_transform(list(linha))
integer_encoded = np.array(integer_encoded).reshape(-1, 1)
one_hot_encoded = one_hot_encoder.fit_transform(integer_encoded)
stacked = np.stack(one_hot_encoded.toarray())
for num in arr_nums:
save(f'arr_{num}.npy',stacked)
它根据行数创建了多个文件,但它们都存储相同的数据,即最后一个字符串one-hot编码。我需要第一个文件用第一行单热编码,第二个文件用第二行单热编码等等。
我做错了什么?
使用不读取整个文件而是逐行读取的结构
with open(padded_file, 'r') as padded:
for i,linha in enumerated(padded):
linha = linha.strip()
# ....other stuff
save(f'arr_{i}.npy',stacked)
我的文件中有这样的字符串:
tactccctccatcccataatataagacatggtcaaacttggcacggtcttcaaaactaatctttaacttttaatttctca
gttggtatcagaggagtggtcctcggaggtttccgcgacggcgccgtccaccaaaccttccgtgcagacgcgtctgctgc
tgttatggtgggtaaaacatatgaaaggcggcccaagcagcccataggccaggccacgccatgagatcaagattaaaggg
tgttcaggccagcaatggacagtttccgggcactgtgccggctccgcgcgcctcggtcccggctcgcgctcgcgcgctcg
cgttatcagcacgagctgcctaagctaatagatactaaaaaaaaatttctgataaaaaaccatatttattatcgactcat
aaagtggtatcagagcttgaagatcctaaagatggcgagtaacaatgttcccttccaagtcccggtgctcacaaagagca
tggtatcagacagccgatcacaagcttccgctccctaacccatcgccgacgacctcaccggccaccacatcctcttctcc
gctggaatagctcagttggttagagcgtgtggctgttaaccacaaggtcggaggttcaagccctccttctagcgcttttt
gagcactgctcccgtccagcaaacggtaccccaggtaccggtaccccggtacgaaacttaatctgaccattgaattagag
gtgttaacccagatcaaatgcctcgttccctgggccgcctcattgtgaggggaagtattgcgacaagtcactaactcttc
cttgagcagagagttgctcattggaatactacaatattcatatattttactggagcttctaaacggattccttcaccatg
aagtgtgatgattggaggtgtgcgggttcgagcgctgtacaactacaccggagaggagcctgatgagctctccttcaaat
gtccactgacctgtaatagagaactggattgctcatgagaccccgatcgttcacttgtaatacattgatagttttcttta
atcaacgggagatgtccaagaccgaataactaagcgaattagtttggacttatcagcgaaatttcagtgatgctgaaagc
aaaatcagtttatcaacgggagatgtccaagaccgaataactaagcgaattagtttggacttatcagcgaaatttcagtg
ctactatgtttaaaaatatgttgaacaaaaaattctctctgttaaaaaaaacagttgggaaatatttttcgaacaattaa
gtaatagccagtcgcacctctactgtactcgaaatacatgtcagtgagattaacattcattattctgaccagacggctta
ttggccatcaaatgagggaaacaggccagctcctcgacaaaaaaagtggcatgagatttatcaaaggattgagaaatgcc
我需要 one-hot encode 每行并保存到一个 numpy 二进制文件。我为任务写了这个函数。
def ohe(padded_file):
integer_encoder = LabelEncoder()
one_hot_encoder = OneHotEncoder(categories='auto')
input_features = []
with open(padded_file, 'r') as padded:
padded = padded.readlines()
arr_nums = [i for i in range(len(padded))]
for linha in padded:
linha = linha.strip()
integer_encoded = integer_encoder.fit_transform(list(linha))
integer_encoded = np.array(integer_encoded).reshape(-1, 1)
one_hot_encoded = one_hot_encoder.fit_transform(integer_encoded)
stacked = np.stack(one_hot_encoded.toarray())
input_features.append(stacked)
np.savez_compressed("seq_arrays.npz", *input_features)
它可以工作,但是如果我需要处理一个更大的文件,其中包含数千行和更长的字符串,这取决于计算机的 RAM 容量,它无法完成这项工作。因此,对于后一种情况,我想我可以为每一行编写一个 numpy 二进制文件,然后加入同一个压缩文件,或者甚至将它们放在一个目录中,以便在必要时使用。 WRT,我做了以下事情:
def ohe(padded_file):
integer_encoder = LabelEncoder()
one_hot_encoder = OneHotEncoder(categories='auto')
with open(padded_file, 'r') as padded:
padded = padded.readlines()
arr_nums = [i for i in range(len(padded))]
for linha in padded:
linha = linha.strip()
integer_encoded = integer_encoder.fit_transform(list(linha))
integer_encoded = np.array(integer_encoded).reshape(-1, 1)
one_hot_encoded = one_hot_encoder.fit_transform(integer_encoded)
stacked = np.stack(one_hot_encoded.toarray())
for num in arr_nums:
save(f'arr_{num}.npy',stacked)
它根据行数创建了多个文件,但它们都存储相同的数据,即最后一个字符串one-hot编码。我需要第一个文件用第一行单热编码,第二个文件用第二行单热编码等等。 我做错了什么?
使用不读取整个文件而是逐行读取的结构
with open(padded_file, 'r') as padded:
for i,linha in enumerated(padded):
linha = linha.strip()
# ....other stuff
save(f'arr_{i}.npy',stacked)