Python:: 读取文件包括字符串、浮点数和整数

Python:: Read file includes strings, floats and integers

我正在尝试读取一个包含矩阵形式的字符串、浮点数和整数的文件, 我尝试了以下代码:

import numpy as np

with open('data.dat', 'r') as f:
     input_data = f.readlines()
for p in input_data:
    pizza_details = p.split(",")

print(pizza_details[1][0])
# pizza =[[1 3389.0  36]
          [2 3148.0   28]
          [3 3012.0   40]
          [4 3321.0   61]
          [5 1761.0   41]]

假设 print(pizza_details[1][0]) 是仍然有效的部分并且您想将其转换为 numpy 格式?

你似乎没有初始化pizza_details,所以它在循环中不断被覆盖,循环后只有最后一行在里面。在循环之前将其初始化为空数组,然后在循环内将拆分行添加到其中。

import numpy as np
with open('data.dat', 'r') as f:
     input_data = f.readlines()
pizza_details = []
for p in input_data:
    pizza_details.append(p.split(","))

现在这是一个列表列表

print(pizza_details)
> [['1', '3389.0', '36'], ['2', '3148.0', '28'], ['3', '3012.0', '40'], ['4', '3321.0', '61'], ['5', '1761.0', '41']]

现在转换为 numpy 二维数组(所有值仍然是字符串)

pizza_details = np.array(pizza_details)
print(pizza_details)
> [['1' '3389.0' '36']
  ['2' '3148.0' '28']
  ['3' '3012.0' '40']
  ['4' '3321.0' '61']
  ['5' '1761.0' '41']]

现在将类型设置为浮点型,以便您可以使用数值

pizza_details = pizza_details.astype(float)
print(pizza_details)
> [[1.000e+00 3.389e+03 3.600e+01]
  [2.000e+00 3.148e+03 2.800e+01]
  [3.000e+00 3.012e+03 4.000e+01]
  [4.000e+00 3.321e+03 6.100e+01]
  [5.000e+00 1.761e+03 4.100e+01]]