2017-03-04 9 views
0

私は関数を使って2つの値の差を計算しました。下の関数の出力を出力すると、答えは-5から4までの範囲です。ただし、関数は肯定的な回答のみを表示したい(つまり、1から4)。 xの境界を変更せずに負の値を無視することはできますか?関数から負の出力を削除するにはどうすればよいですか?

import numpy as np 
L = 10 
a = 5 

def position(x,a): 
     return x-a 

x = np.arange(0.0, L, 1) 
print (position(x,a)) 
[-5. -4. -3. -2. -1. 0. 1. 2. 3. 4.] 
+0

を条件を満たす値は、あなたの例では論理インデックスを使用します: 'y [y> 0]' –

答えて

2
import numpy as np 
L = 10 
a = 5 

def position(x,a): 
    return x-a 

x = np.arange(0.0, L, 1) 
tmp = position(x,a) 
print (tmp[tmp>=0]) 
+2

OPは肯定的なものしか求めていないので、 '> 0'なのではないでしょうか? (彼の "すなわち"という意味では、彼は他のところで矛盾していた..) – DSM

+0

@DSMうん、本当。そして、はい、投稿のどの部分を見るかに応じて、答えはノーとすることもできます) – yar

1

これは、私はこれが動作するはずです、あなたの質問から取ることができるものに基づいてnumpyの配列

import numpy 
arr = numpy.array([-1.1, 0.0, 1.1]) 
print(arr) 
bools = arr >= 0.0 # define selection 
print(bools) 
# filter by "bools" 
print(arr[bools]) 
-1

をフィルタリングする例を助ける可能性がありますだけ維持する

result = list(filter(lambda x:x>=0, position(x,a)) 
+0

これはうまくいくはずですが、他の提案と比べて複雑すぎます。それにもかかわらず、それはおそらく少ないRAMを取る可能性があります。 – yar

関連する問題