2017-11-10 17 views
0

での作業、私は今、私はxのy-coordinatevalueを超えた知って座標を持つテキストファイル座標/配列

X1、Y1のZ1

×2のY2 Z2

をしたいしています特定の点。それ、どうやったら出来るの?私はfunctionlistとの使用を試みた最初のステップとして

def coordinates(dataset): 

    x = np.array(0) 
    y = np.array(0) 
    z = np.array(0) 

    dataset = open(dataset,'r') 

    dataset = line.strip() 
    dataset = line.split() 

    i=0 
    while i<10: 
     x = np.append(x,float(line[0])) 
     y = np.append(y,float(line[1])) 
     z = np.append(y,float(line[2])) 
     i+=1 

    print x 
    return x,y 

を(I、端末に結果を確認するためにprint xを使用) functionを使用する場合、line.split()のみ最後の行を使用しているようだとそれを分割する。したがって、端末の結果は[0 x10 x10 x10 x10 x10 x10 ...]です。

誰でも修正方法を知っていますか?または、他の/より良い解決策がありますか?

+1

Pythonの亀裂ではなく、コントロールの流れから:1行を読み、分割し、次の行を読み込み、分割する必要があります。 - 疑わしいコードでは、代わりにすべての行を読み込みます配列を分割し、配列の各部分を分割します。コードのどの部分も "Exceed"の仕組みをチェックしません。 Kensの回答を見てくださいhttps://stackoverflow.com/questions/9857731/python-read-in-string-from-file-and-split-it-int-values howto read lines/split –

+0

ありがとう! Kensの回答が多くの助けになりました! – siny

答えて

0

np.loadtxt機能を使用してください。あなたは3つのアレイ内のすべての座標

from io import StringIO 
import numpy as np 

### simulates your input file 
c = StringIO("0 1 2 \n 3 4 5 \n 6 7 8") 

d=np.loadtxt(c) # file readout into a 2D array 
x=d[:,0]  # gets x coordinate array 
y=d[:,1] 
z=d[:,2] 

print (x) 
print (y) 
print (z) 
### 

xQ = 3.5      # your "exceed" coordinate 
print (y[x>xQ][0])    # returns the first y value where x>xQ 

を持った後、最後の行は[x>xQ]が実際に私たちはあなたのケースでは、他の座標上にyを適用することができますブールマスク配列であることを使用しています。

+0

ありがとう!それはたくさんの助けになりました! – siny

関連する問題