2016-06-13 4 views
0

.txtファイルに複数のスペース区切りの配列があります。それらをすべてフォルダからインポートし、正しい順序で連結してから、列の1つは最初の列から続きます。私は、アレイ1配列をインポートして連結した後、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] 

に任意のアイデアをしたいですか?ある列の最終値が、次の配列の同じ列のすべての値に追加されることは、非常に重要です。 3番目の配列では、2番目の配列の最終値などを広告したいと思います。

そうそう、私はかなり新しいですし、これまでのところ、私は唯一のファイル名のリストを作成しているこの、持っている:

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) 

OKを、今、私はこの持っている:(

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は最初は正しい結果を返しますが、2回目の実行でloc_sevenは2つのloc_sevens )。

+0

を[numpy.loadtxt](http://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.loadtxt.html#numpy-loadtxt)と[numpy.column_stack](http:// docs .scipy.org/doc/numpy-1.11.0/reference/generated/numpy.column_stack.html#numpy.column_stack) – Michele

答えて

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]]) 
+0

ありがとうございます!インポートされた配列の数が異なっても動作するように、どのように普遍的に行うのですか?私はこのように処理する6つ以上の方法があるとしましょう。それをループで自動化する方法はありますか? – David

+0

'a'、' b'、 'c'を連結する場合は、最初に' a'と 'b'を結合し、新しく作成された配列に' c'を結合します – Finwood

関連する問題