gpt4 book ai didi

python - 加载一个文件 python

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:33 25 4
gpt4 key购买 nike

我正在尝试使用 python 加载文件,但我不想一次加载全部文件。我遇到错误,但不知道如何修复。

这是代码:

import numpy as np
from itertools import islice

with open('C:/Users/jack/Desktop/folder/a.txt') as f:
while True:
next_n_lines = np.loadtxt(islice(f, 2))
if (next_n_lines.any()==0):
break
a = next_n_lines[:, 0:2]
b = next_n_lines[:, 2:4]
print(a)
print(b)

这是输出:

[[ 1.  2.]
[ 2. 3.]]
[[ 3. 4.]
[ 4. 5.]]
[[ 3. 4.]
[ 4. 5.]]
[[ 5. 6.]
[ 6. 7.]]
[[ 5. 6.]
[ 6. 7.]]
[[ 7. 8.]
[ 8. 9.]]
Traceback (most recent call last):
File "C:\Users\jack\Desktop\folder\a.py", line 9, in <module>
a = next_n_lines[:, 0:2]
IndexError: too many indices for array

这是我正在加载的文件:

1   2   3   4
2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8
6 7 8 9
7 8 9 10

最佳答案

据我了解,您的加载文件缺少一行,因此无法创建最后两个数组。

这是一次加载两行的方法:

import numpy as np
from itertools import islice

with open(r'C:\\path\\to\\file\\a.txt') as f:
while True:
try :
line1 = next(f)
line2 = next(f)
except StopIteration:
break

a1 = np.loadtxt(islice(line1.split(' '), 2))
a2 = np.loadtxt(islice(line2.split(' '), 2))
a = np.array([a1,a2])

b1 = np.loadtxt(islice(line1.split(' '), 2, 4))
b2 = np.loadtxt(islice(line2.split(' '), 2, 4))
b = np.array([b1,b2])

print(a)
print(b)

f 是一个迭代器,因此您可以调用 next 方法来获取迭代器的下一个值。您当然可以将代码概括为一次读取 n 行。

输出为:

[[ 1.  2.]
[ 2. 3.]]
[[ 3. 4.]
[ 4. 5.]]
[[ 3. 4.]
[ 4. 5.]]
[[ 5. 6.]
[ 6. 7.]]
[[ 5. 6.]
[ 6. 7.]]
[[ 7. 8.]
[ 8. 9.]]

关于python - 加载一个文件 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46580159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com