【问题标题】:How to read arrays to form a matrix from file using numpy如何使用numpy从文件中读取数组以形成矩阵
【发布时间】:2017-12-05 22:55:32
【问题描述】:

我有一个包含数据的文件: 每行 2 个数组。总计 = 10,000 行。

[1,2,3,4,5][2,4,6,8,10]
[3,6,9,12,24][6,12,18,24,48]
....]

我打算在 fit 命令中将此输入提供给线性回归。 我遇到了如何用条目构造矩阵的问题。

我正在考虑构建数组(2 x x),例如:

x=[
    [1,2,3,4,5]
    [3,6,9,12,24]
    ....]

y=
  [[2,4,6,8,10]
   [6,12,18,24,48]
    ....]

这样我就可以将 fit 命令作为输入。

我看到 numpy.fromfile 用于获取二进制数据。 我可以将它用于列表吗?

https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.fromfile.html

【问题讨论】:

  • 我没有使用过 fromfile,但我可能会尝试你链接的文档中的示例,看看它在使用它保存数据时生成的文件与你所拥有的文件有多么相似。我可能希望它与数据一起存储一些元数据,这意味着要么“不”,要么你必须编辑你的文件。

标签: python numpy


【解决方案1】:

这里是解决方案

f = open("test.txt","r")
x = []
y = []
for i in f.readlines():
    split_values = i.split("][")
    s1 = split_values[0].replace('[','')
    s2 = split_values[1].replace(']','')
    s1_split = s1.split(",")
    s2_split = s2.split(",")
    s1_split = map(int, s1_split)
    s2_split = map(int, s2_split)
    x.append(s1_split)
    y.append(s2_split)
print(x)
print(y)

【讨论】:

  • 谢谢蒂拉克。它以我希望输出 2 个数组的方式工作。我们也可以使用 numpy 吗?
  • 我看到 y 总是只得到空行\
【解决方案2】:

使用熊猫的解决方案

import pandas as pd

df = pd.read_csv('input.txt', delimiter="\]\[", header=None, engine='python')
df[0] = (df[0] + ']')
df[1] = ('[' + df[1])
x = df[0].tolist()
y = df[1].tolist() 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多