python numpy array append nu funcționează în fișierul .py, dar funcționează în terminal (Programare, Python, Array-Uri, Numpy, Append)

user3052069 a intrebat.

Încerc să adaug la un array numpy folosind np.append.

De exemplu,

a = np.array([1])

np.append(a, [2])

acest cod funcționează bine în terminal (rezultatul este array([1, 2])), dar nu funcționează atunci când execut un fișier .py care include același cod inclus în el. Când tipăresc a după ce am adăugat [2], ar fi tot [1].

Iată codul pentru fișierul meu test.py:

import numpy as np

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

și acesta este rezultatul rulării acestuia cu terminalul:

python test.py
[1]
[1]

Rezultat greșit, fără eroare. știe cineva care ar putea fi problema?

3 răspunsuri
Serenity
import numpy as np
a = np.array([1])
print(a)
a = np.append(a, [2])
print(a)

numpy.append(arr, values, axis=None), unde arr este valorile sunt anexate la un copie a acestei matrice (http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.append.html).

În terminal, codul dvs. funcționează deoarece np.append(a,[2]) devine print np.append(a,[2]).

bantmen

Sunteți sigur că versiunea de numpy folosită în terminal și pentru execuția fișierului .py este aceeași? Conform http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.append.html np.append în numpy 1.10.0 nu este la locul lui și, prin urmare, este în concordanță cu comportamentul pe care îl obțineți de la python test.py

Pentru a compara versiunile, puteți să imprimați și să comparați numpy.__version__

Comentarii

  • Conform unui răspuns la această întrebare , am aflat că era din cauză că nu foloseam o „copie” a matricei. În terminal, folosind np.append() se obține direct rezultatul, în timp ce în fișierul .py funcția np.append() pare să arunce(?) rezultatul înainte de a imprima valoarea lui a. Așa am corectat codul meu în test.py și acum funcționează: import numpy as np a = np.array([1]) print(a) a = np.append(a, [2]) print(a) –  > Por user3052069.
  • np.append este o altă modalitate de a utiliza np.concatenate. Nu este și nu a fost niciodată o clonă a lui list append. –  > Por hpaulj.
Eric

Înțelegi greșit ceea ce face terminalul. Când scrii următoarele într-un terminal:

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

Evident că nu i-ai cerut să tipărească, dar o face. Deci terminalul trebuie să fi inserat o instrucțiune de tipărire. Terminalul este de fapt în execuție:

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

Adică, toate expresii care nu returnează None sunt înfășurate în print repr(...)

Desigur, codul dumneavoastră nu inserează aceeași instrucțiune de tipărire, deci, desigur, dă un rezultat diferit