Voeg enkel element toe aan array in numpy

Ik heb een numpy-array met:

[1, 2, 3]

Ik wil een array maken met:

[1, 2, 3, 1]

Dat wil zeggen, ik wil het eerste element aan het einde van de array toevoegen.

Ik heb het voor de hand liggende geprobeerd:

np.concatenate((a, a[0]))

Maar ik krijg de foutmelding ValueError: arrays must have same number of dimensions

Ik begrijp dit niet – de arrays zijn beide slechts 1d arrays.


Antwoord 1, autoriteit 100%

append()maakt een nieuwe array aan die de oude array kan zijn met het toegevoegde element.

Ik denk dat het normaal is om de juiste methode te gebruiken om een element toe te voegen:

a = numpy.append(a, a[0])

Antwoord 2, autoriteit 18%

Als je maar één keer of af en toe iets toevoegt, zou het gebruik van np.appendop je array prima moeten zijn. Het nadeel van deze benadering is dat er bij elke aanroep geheugen wordt toegewezen aan een geheel nieuwe array. Bij het kweken van een array voor een aanzienlijk aantal steekproeven is het beter om de array vooraf toe te wijzen (als de totale grootte bekend is) of om deze aan een lijst toe te voegen en daarna naar een array te converteren.

Gebruik np.append:

b = np.array([0])
for k in range(int(10e4)):
    b = np.append(b, k)
1.2 s ± 16.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

Python list gebruiken om daarna naar array te converteren:

d = [0]
for k in range(int(10e4)):
    d.append(k)
f = np.array(d)
13.5 ms ± 277 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

Numpy-array vooraf toewijzen:

e = np.zeros((n,))
for k in range(n):
    e[k] = k
9.92 ms ± 752 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

Als de uiteindelijke grootte niet bekend is, is vooraf toewijzen moeilijk. Ik heb geprobeerd vooraf toe te wijzen in stukjes van 50, maar het kwam niet in de buurt van het gebruik van een lijst.

85.1 ms ± 561 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

Antwoord 3, autoriteit 7%

a[0]is geen array, het is het eerste element van aen heeft daarom geen afmetingen.

Probeer in plaats daarvan a[0:1]te gebruiken, waarmee het eerste element van abinnen een enkele itemarray wordt geretourneerd.


Antwoord 4, autoriteit 6%

Probeer dit:

np.concatenate((a, np.array([a[0]])))

http://docs.scipy.org/doc/ numpy/reference/generated/numpy.concatenate.html

concatenate heeft beide elementen nodig om numpy arrays te zijn; a[0] is echter geen array. Daarom werkt het niet.


Antwoord 5, autoriteit 6%

Deze opdracht,

numpy.append(a, a[0])

verandert aarray niet. Het retourneert echter een nieuwe gewijzigde array.
Dus, als awijziging nodig is, dan moet het volgende worden gebruikt.

a = numpy.append(a, a[0])

Antwoord 6, autoriteit 4%

t = np.array([2, 3])
t = np.append(t, [4])

Antwoord 7

Dit is misschien een beetje overdreven, maar ik gebruik altijd de functie np.takevoor alle omhullende indexering:

>>> a = np.array([1, 2, 3])
>>> np.take(a, range(0, len(a)+1), mode='wrap')
array([1, 2, 3, 1])
>>> np.take(a, range(-1, len(a)+1), mode='wrap')
array([3, 1, 2, 3, 1])

Antwoord 8

Laten we zeggen a=[1,2,3]en je wilt dat het [1,2,3,1]is.

U kunt de ingebouwde append-functie gebruiken

np.append(a,1)

Hier is 1 een int, het kan een string zijn en het kan al dan niet behoren tot de elementen in de array. Afdrukken: [1,2,3,1]


Antwoord 9

Als je een element wilt toevoegen, gebruik dan append()

a = numpy.append(a, 1)voeg in dit geval de 1 toe aan het einde van de array

Als je een element wilt invoegen, gebruik dan insert()

a = numpy.insert(a, index, 1)in dit geval kun je de 1 plaatsen waar je wilt, met index om de positie in de array in te stellen.

Other episodes