【问题标题】:How to remove quotation from a 2d array如何从二维数组中删除引号
【发布时间】:2021-06-26 00:19:39
【问题描述】:

那里。我正在尝试删除以下输出的引号

[['40' '40']
 ['10' '10']
 ['200' '200']
 ['230' '231']
 ['40' '43 ']
 ['15' '45 ']
 ['220' '190']]

我希望得到以下输出:

[[40 40]
 [10 10]
 [....]]

这是我的代码。我已经尝试了一段时间,但无法弄清楚。如果有人可以提供帮助,将不胜感激。

import numpy as np
import matplotlib.pyplot as plt

def extract_file(file_name):
    file = open(file_name,'r')
    lines = ([line.strip("\n").split(",") for line in file])
    x= np.array(lines)
    return x
t= extract_file("backyard.txt")

【问题讨论】:

  • 引号不在数据中,它们被显示是因为数组元素是字符串。创建数组时将它们转换为数字。
  • @Barmar 不,元素是整数,但是当它们变成二维数组时,元素也变成了字符串
  • 不,他们不是。 line.strip("\n").split(",") 返回字符串列表,而不是整数。
  • 不行,拆分后的元素需要调用int()。看我的回答。
  • 另请参阅stackoverflow.com/questions/3518778/… 以将 CSV 直接读取到 numpy 数组中。

标签: python arrays file 2d quotation-marks


【解决方案1】:

line.strip("\n").split(",") 返回字符串列表,因此您创建的是字符串数组,而不是整数。在创建数组之前将它们转换为整数。

lines = [list(map(int, line.strip("\n").split(","))) for line in file]

【讨论】:

  • 我试过了,虽然有错误:IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed.
  • 尝试添加对list()的调用。
【解决方案2】:

@Barmar cmets , np.genfromtxt 可以使用

import numpy as np
import matplotlib.pyplot as plt

def extract_file():
    return np.genfromtxt('test.txt',delimiter=',')
print(extract_file())

输出:

[[ 40.  40.]
 [ 10.  10.]
 [200. 200.]
 [230. 231.]
 [ 40.  43.]
 [ 15.  45.]
 [220. 190.]]

它,Float,但我认为它的工作原理是一样的,

>>>type(numpy.genfromtxt('test.txt',delimiter=',')[0][0])
<class 'numpy.float64'>

【讨论】:

  • 如果我将文件输入为 file = open("backyard.txt", "r") 我得到一个错误,说 lines.append(int(line)) ValueError: invalid literal for int() 以 10 为底:','
猜你喜欢
  • 2018-12-26
  • 2011-10-19
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多