2016-05-29 5 views
2

np.appendを使用してnumpy配列に追加しようとしています。例えばpython numpy配列が.pyファイルで動作しないが、端末で動作する

a = np.array([1]) 

np.append(a, [2]) 

このコードは端末内にうまく機能する(結果は配列([1,2])である)、私はそれを含むの.pyファイルを実行するとき、それは動作しませんコードが含まれています。 [2]を追加した後にaを印刷すると、それでも[1]になります。ここで

は私のtest.pyファイルのコードです:

import numpy as np 

a = np.array([1]) 
print(a) 
np.append(a, [2]) 
print(a) 

、これは、端末でそれを実行した結果である:エラーなしで

python test.py 
[1] 
[1] 

間違った結果。 誰かがおそらく問題になる可能性があることを知っていますか?

答えて

2

端末内で使用されているnumpyのバージョンと.pyファイルの実行が同じであることを確認してください。場所ではないので、あなたはバージョンを比較するにはpython test.py

から取得している行動と一致しているnumpyの1.10.0でhttp://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.append.html np.appendによると、あなたはnumpy.__version__

+1

[この質問の回答](http://stackoverflow.com/questions/34597871/numpy-wont-append-arrays)によると、私は、配列の 'コピー'。端末では、np.append()を使用すると結果が直接得られますが、.pyファイルでは、np.append()関数はaの値を出力する前に結果を破棄しているようです。これは私がtest.pyで私のコードを固定する方法であり、それが動作するようになりました:(a)の 'NPとしてインポートnumpyの A = np.array([1]) プリント= np.append( a、[2]) print(a) ' – user3052069

+0

' np.append'は 'np.concatenate'を使うもう一つの方法です。リストのクローンが追加されたことはありません。 – hpaulj

1

端末が何をしているのか誤解しています。

>>> a = np.array([1]) 
>>> np.append(a, [2]) 
array([1, 2]) 

あなたは明らかに印刷を依頼していませんでしたが、それは明らかです。したがって、端末はprintステートメントを挿入していなければなりません。ターミナルは、実際に実行されている:

ある
a = np.array([1]) 
print repr(np.append(a, [2])) 

Noneを返さないすべての表現は、あなたのコードが同じprint文を挿入されていません。もちろん、print repr(...)

に包まれている、もちろん、それが与えるので、別の結果

関連する問題