python - 如果随机写入,我该如何安排这个 3D 数组数据
问题描述
我有一个用电的数据,它的排列如下房间时序1 时序2。时序3 时序4 时序5 时序6 1 34.5。22.1. 34.2 0 45 0 2 42.1 31.2 4.1 0 21 1 以此类推。
它被保存为 .txt 文件。我正在尝试将数据导入 python 并找到每个房间的最小值和最大值以及平均值。然后找出每个房间的最大电量和最小电量。我唯一的困难是我不知道如何排列我的数据,我可以将其列在列表中,而无需将数字本身放入列表中,例如 room1= [ 34.5, 22.1, 34.2, 0, 45, 0] . 我不想那样做。顺便说一下,这是一个我从未使用过的 3D 数组。有人可以帮我安排我的数据吗?我可以在不使用上面列出的方法的情况下找到最小值、最大值和平均值吗?
解决方案
我假设您的数据是单个文件中由空格分隔的单个字符串。
这应该在内存中逐部分加载数据处理它并将其转储到文件中,您将在其中有一个房间及其每行的 X 时间间隔。
input_filename = "./input.txt"
output_filename = "./output.txt"
entries = []
rooms = []
time_intervals = 6
buff = ""
max_rooms_on_mem = 1
def flush_rooms(rooms):
with open(output_filename, 'a') as fo:
for room in rooms:
fo.write(' '.join([str(x) for x in room]))
fo.write('\n')
fo.close()
with open(input_filename) as fi:
while True:
c = fi.read(1)
if not c:
print("End of file")
break
if c != " ":
buff += c
else:
entries.append(float(buff))
buff = ""
if len(entries) == time_intervals:
rooms.append(entries)
entries = []
if len(rooms) == max_rooms_on_mem:
flush_rooms(rooms)
rooms = []
fi.close()
flush_rooms(rooms)
您的输入文件应如下所示...
34.5 22.1 34.2 0 45 0 2 42.1 31.2 4.1 0 21 1
你的输出文件看起来像这样......
34.5 22.1 34.2 0.0 45.0 0.0
2.0 42.1 31.2 4.1 0.0 21.0
您可以使用time_intervals
来确定一个房间应该有多少时间间隔。并且您可以使用max_rooms_on_mem
来确定在下一次刷新之前应该保留多少个房间...这样您就不会超载您的内存。
如果您只想使用rooms
内存中的所有内容,您可以设置max_rooms_on_mem=-1
结果永远不会被刷新。
否则,您可以使用以线表示房间的输出文件。
我希望这可以帮助你
推荐阅读
- sas - 在 SAS 中使用“set”两次组合数据集
- node.js - Node.js 上突然出现 400 Bad Request 错误
- php - PHP在单行中获取所有事件
- php - 无法从数据库中回显用户数据 - 说“属性 [id] 不存在”
- ios - 获取我使用 Interface Builder 添加的 UIBarButtonItems
- html - 带有标题元素的内联徽标
- flutter - 在颤动中对齐行内的文本
- angular - 如何在 .ts 文件中使用切片?
- r - geom_vline + geom_text:标签垂直旋转时对齐标签
- node.js - RequestError:错误:当节点版本设置为 10x 时,客户端网络套接字在建立安全 TLS 连接之前已断开连接