Python 将.txt加载为数组



只需有一个带有数据的颜色.txt文件:

[(216, 172, 185), (222, 180, 190), (231, 191, 202), (237, 197, 206), (236, 194, 204), (227, 184, 194), (230, 188, 200), (232, 192, 203), (237, 199, 210), (245, 207, 218), (245, 207, 218)]

现在只需尝试将其在 Python 中作为数组读取

f = open("colors.txt", "r")
data = f.read()
data2 = np.append(data)
f.close()

现在想打印第一个值,但我有一个错误

print(data2[0])

类型错误: _append_dispatcher(( 缺少 1 个必需的位置 参数:"价值观">

问题是当您真正想要list时,您正在从文件中附加字符串数据。因此,请使用literal_eval安全地评估数据类型:

import numpy as np
from ast import literal_eval
with open('colors.txt') as fh:
data = literal_eval(fh.read())
# np.array can consume a list
arr = np.array(data)
array([[216, 172, 185],
[222, 180, 190],
[231, 191, 202],
[237, 197, 206],
[236, 194, 204],
[227, 184, 194],
[230, 188, 200],
[232, 192, 203],
[237, 199, 210],
[245, 207, 218],
[245, 207, 218]])

您也不想使用np.append,因为这需要两个参数,即要追加的数组和要追加的数据。您想从文件中读取的数据中构造一个数组

使用 eval 方法读取文本并追加到空数组中

import numpy
data1=[]
f = open("colors.txt", "r")
data = f.read()
f.close()
L = eval(data)
print(L)
data2 = numpy.append(data1,L)
print(data2[0])

您可以使用 eval 将文本表示形式评估回 python 类型:

f = open("colors.txt", "r")
data = f.read()
data = eval(data)
data2 = np.append(data)
f.close()