我在.txt文件中有几个以空格分隔的数组我想从文件夹中导入它们,以正确的顺序连接它们然后取一列并使其中一列中的值从第一列开始继续。
基本上如果我有阵列1
[1 2 3]
[2 2 3]
[3 2 3]
和数组2
[1 2 3]
[2 3 3]
[3 2 3]
我想要一个最终数组
[1 2 3]
[2 2 3]
[3 2 3]
[4 2 3]
[5 3 3]
[6 2 3]
有什么想法吗?将一列的最终值添加到下一个数组中同一列的所有值非常重要。在第三个数组中,我想要广告SECOND数组的最终值,依此类推。
哦是的,我很新,到目前为止我只有这个,这就是文件名列表:
import os
import numpy as np
from os import listdir
mypath = raw_input('Enter directory path: ')
relevant_path = mypath
included_extenstions = ['txt']
file_names = [fn for fn in os.listdir(relevant_path)
if any(fn.endswith(ext) for ext in included_extenstions)]
sorted_file_names = sorted(file_names)
好的,现在我有了这个:
included_extenstions = ['txt']
file_names = [fn for fn in os.listdir(relevant_path)
if any(fn.endswith(ext) for ext in included_extenstions)]
sorted_file_names = sorted(file_names)
loc_one = np.loadtxt(sorted_file_names[0])
loc_two = np.loadtxt(sorted_file_names[1])
loc_three = np.loadtxt(sorted_file_names[2])
loc_four = np.loadtxt(sorted_file_names[3])
loc_five = np.concatenate((loc_one, loc_two), axis = 0)
loc_five[-len(loc_two):,1] += loc_one[-1,1]
loc_six = np.concatenate((loc_five, loc_three), axis = 0)
loc_six[-len(loc_three):,1] += loc_five[-1,1]
loc_seven = np.concatenate((loc_six, loc_four), axis = 0)
loc_seven[-len(loc_four):,1] += loc_six[-1,1]
(数组都称为loc_number)它似乎非常暴力和不灵活。此外,如果我运行它几次它以某种方式存储它在第一次运行中所做的事情,所以一切都保持加倍 - loc_seven第一次给出正确的结果,但loc_seven在第二次运行时给出两个loc_sevens(然后4等等)的串联)。
答案 0 :(得分:0)
首先,连接数组:
In [16]: a = np.array([[1,2,3],[2,2,3],[3,2,3]])
In [17]: b = np.array([[1,2,3],[2,3,3],[3,2,3]])
In [18]: c = np.concatenate((a, b), axis=0)
In [19]: c
Out[19]:
array([[1, 2, 3],
[2, 2, 3],
[3, 2, 3],
[1, 2, 3],
[2, 3, 3],
[3, 2, 3]])
然后,切出最后len(b)
行的第一列,并添加a
的最后一行的第一个值:
In [20]: c[-len(b):,0] += a[-1,0]
In [21]: c
Out[21]:
array([[1, 2, 3],
[2, 2, 3],
[3, 2, 3],
[4, 2, 3],
[5, 3, 3],
[6, 2, 3]])