python - 如何加载 csv 文件并将其内容存储到 python 中的 (numpy) 数组中?

标签 python numpy

给定以下两个仅包含字符串的 csv 文件,如何将它们加载到 (numpy) 数组中?

**1.txt**
A,B,D
E,G,A

**2.txt**
A,B,D
E,G,A

**data**
1,A,B,D
1,E,G,A
2,A,B,D
2,E,G,A

最佳答案

您可以使用 numpy.loadtxt 加载它们:

>>> import numpy as np
>>> data1 = np.loadtxt("1.txt", dtype=np.object, delimiter=",")
>>> data2 = np.loadtxt("2.txt", dtype=np.object, delimiter=",")
>>> print data1
 [['A' 'B' 'D']
  ['E' 'G' 'A']]

如果你想堆叠两个数组使用numpy.vstack:

>>> np.vstack( (data1, data2) )
 [['A' 'B' 'D']
  ['E' 'G' 'A']
  ['A' 'B' 'D']
  ['E' 'G' 'A']]

如果你想添加源:

>>> first_col = np.vstack( (np.array([[1] * data1.shape[0]]).T, np.array([[2] * data2.shape[0]]).T) )
>>> stack = np.vstack( (data1, data2) )
>>> data = np.hstack( (first_col, stack) )
>>> print data
 [[1 'A' 'B' 'D']
  [1 'E' 'G' 'A']
  [2 'A' 'B' 'D']
  [2 'E' 'G' 'A']]

如果要保存为保存格式:

>>> np.savetxt('data.txt', data, fmt='%s', delimiter=",")

这将生成data.txt:

1,A,B,D
1,E,G,A
2,A,B,D
2,E,G,A

更新:处理无限数量文件的函数(我假设文件被命名为带有 .txt 扩展名的数字,与您在问题中指定的方式相同:1.txt、2.txt , 3.txt... n.txt):

import numpy as np

def get_from_csv(fname):
    data = np.loadtxt(fname, dtype=np.object, delimiter=",")
    col = np.array([[ int(fname.rstrip(".txt")) ] * data.shape[0]]).T
    return np.hstack( (col, data) )

files = ["1.txt", "2.txt", "3.txt"]

for f in files:
    try:
        data = np.vstack( (data, get_from_csv(f)) )
    except:
        data = get_from_csv(f)
print data

输出:

[[1 'A' 'B' 'D']
 [1 'E' 'G' 'A']
 [2 'A' 'B' 'D']
 [2 'E' 'G' 'A']
 [3 'A' 'B' 'D']
 [3 'E' 'G' 'A']]

关于python - 如何加载 csv 文件并将其内容存储到 python 中的 (numpy) 数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18977884/

相关文章:

python - 是否可以在 CLI 中修改 json 对象?

python - reshape 向量并用 nan 填充最后缺失的位置

python - 检查列表中整数之间的数字

pandas - 如何对 pyspark dataframe 中的单列进行 reshape 操作?

python - 用户警告 : Failed to initialize NumPy: module compiled against API version 0xf but this version of numpy is 0xe (Triggered internally at

python - 在numpy记录数组中如何访问python中的某些元素值

python - 在 Python 中取消融化 Pandas 数据框?

python - 在 matplotlib 中将单位设置为 X 轴

python - 如何在 Python 3 中重用进程池进行并行编程

python - 我的程序正确执行所有操作,但它以随机顺序打印输入 [Python 3,初学者]