numpy — numpy-kompatibla arrayoperationer¶
Undermodulen numpy i ulab tillhandahåller ett numpy-kompatibelt API uppbyggt kring den n-dimensionella arraytypen ndarray. Den implementerar en utvald delmängd av CPython numpy: arraykonstruktion, elementvis matematik, reduktioner och statistik, linjär algebra, FFT:er, slumptalsgenerering, polynomanpassning och grundläggande I/O.
Undermodulen importeras enligt konvention som np
from ulab import numpy as np
a = np.array([1, 2, 3, 4], dtype=np.float)
b = np.linspace(0, 1, num=5)
c = np.dot(a.reshape((2, 2)), a.reshape((2, 2)))
Varje dtype-argument är en av heltalskonstanterna som exponeras på modulnivå: numpy.bool, numpy.uint8, numpy.int8, numpy.uint16, numpy.int16, numpy.float (standardvärdet) och (när stöd för komplexa tal är inkompilerat) numpy.complex. Resultattypen ndarray syftar på numpy.ndarray.
Undermoduler¶
klass ndarray — den n-dimensionella arrayen¶
En ndarray är den n-dimensionella, dtype-medvetna behållaren i kärnan av numpy / ulab. Datan lagras i ett sammanhängande block vars tolkning beskrivs av ett litet huvud (dtype, shape, strides, ndim, itemsize). Många operationer – reshape, transpose, slicing – justerar bara detta huvud och är därför mycket billiga; metoder som allokerar nytt lagringsutrymme (copy, flatten, de flesta aritmetiska operationer) returnerar en ny tät array.
Samma typ är åtkomlig som ulab.ndarray, numpy.ndarray och (på den här sidan) helt enkelt ndarray.
- class numpy.ndarray(values: ndarray | bytes | list | tuple, *, dtype: int = numpy.float)¶
Skapa en ny
ndarray.- Parametrar:
values – Källdata. Antingen en annan
ndarray(som djupkopieras, med typkonvertering omdtypeskiljer sig) eller någon MicroPython-itererbar. Nästlade itererbara objekt ger flerdimensionella arrayer; de inre itererbara objekten måste alla ha samma längd, annars uppstår ettValueError.dtype – Elementtyp för den nya arrayen. En av typkodsheltalen som exponeras av
numpy(numpy.bool,numpy.uint8,numpy.int8,numpy.uint16,numpy.int16,numpy.floatoch – när det stöds –numpy.complex), eller endtype-instans. Standardvärdet ärnumpy.float.
Fabriksfunktionen
numpy.arrayär det konventionella sättet att skapa enndarray; den vidarebefordrar till denna konstruktor.- byteswap(*, inplace: bool = False) ndarray¶
Byt byteordning för varje element. För arrayer av typen
uint16,int16,floatochcomplexvänder detta byteordningen per element, vilket är användbart vid konsumtion av data från kringutrustning vars endianness inte matchar mikrokontrollerns. För dtypes på en byte (bool,uint8,int8) är detta en no-op som returnerar en vy eller kopia.Om
inplaceärFalse(standardvärdet) returneras en nyndarrayoch originalet lämnas orört. OminplaceärTruebyts byteordningen iselfpå plats och en vy avselfreturneras.
- copy() ndarray¶
Returnera en ny tät, djup kopia av arrayen. Kopian äger sin egen data; ändringar i den påverkar inte originalet.
- flatten(*, order: str = 'C') ndarray¶
Returnera en ny endimensionell kopia av arrayen.
- Parametrar:
order –
'C'(standardvärdet) genomlöper datan i C-ordning (sista axeln varierar snabbast);'F'genomlöper den i Fortran-ordning (första axeln varierar snabbast).
- reshape(shape: int | tuple[int, ...]) ndarray¶
Returnera en vy av arrayen med en ny form. Det totala antalet element måste vara oförändrat, annars uppstår ett
ValueError. Endast tillgänglig närULAB_MAX_DIMS > 1. Motsvarar tilldelning tillshape.
- sort(*, axis: int | None = -1) None¶
Sortera arrayen på plats.
- Parametrar:
axis – Axel att sortera längs.
-1(standardvärdet) sorterar längs den sista axeln;Noneplattar först ut arrayen och sorterar sedan.
- tobytes() bytearray¶
Returnera en
bytearraysom aliasar arrayens underliggande databuffert. Skrivningar genom den returneradebytearrayändrar arrayen på plats. Ger upphov tillValueErrorom arrayen inte är tät (t.ex. en utsnittad vy).
- tolist() list¶
Returnera arrayens innehåll som en (eventuellt nästlad) Python-
list. Nästlingsdjupet är lika medndim.
- transpose() ndarray¶
Returnera arrayens transponat (axlarna omvända). För endimensionella arrayer returnerar detta
self. Endast tillgänglig närULAB_MAX_DIMS > 1. AttributetTär en förkortning för denna metod.
- dtype: dtype | int¶
Datatypen för arrayens element. Returnerar en
dtype-instans när den fasta programvaran är byggd medULAB_HAS_DTYPE_OBJECTaktiverat, annars den underliggande typkoden på ett tecken som ett heltal.
- flat: flatiter¶
En platt iterator som ger varje element i arrayen i C-ordning. Till skillnad från
flatten()allokerar iteration överflatingen ny array.
- shape: tuple[int, ...]¶
Längderna för arrayen längs varje axel. Tilldelning av en tupel till
shapeomformar arrayen på plats (motsvararreshape()).
- strides: tuple[int, ...]¶
Antalet byte att stega i minnet längs varje axel för att nå nästa element längs den axeln.
- T: ndarray¶
Arrayens transponat; motsvarar
transpose().
Operatorer som stöds¶
ndarray-instanser stöder följande operatorer. Binära operatorer broadcastar sina operander enligt standardregler för numpy-broadcasting och följer numpys uppkonverteringsregler (t.ex. uint8 + int8 => int16, uint16 + int16 => float); operationer som involverar en komplex operand ger ett komplext resultat.
Aritmetik (binär): +, -, *, /, //, %, **. Reflekterade (högersidiga) operander och varianterna på plats +=, -=, *=, /=, %=, **= stöds också. Både formen ndarray-med-ndarray och ndarray-med-skalär accepteras. Heltalsdivision (//) och modulooperatorn (%) är inte implementerade för complex-arrayer.
Jämförelse: ==, !=, <, <=, >, >=. Var och en returnerar en boolesk ndarray av broadcast-formen.
Bitvis (endast heltalsarrayer): &, |, ^. Att tillämpa dessa på en float- eller complex-array ger upphov till TypeError.
Unär: + (returnerar en kopia), - (negation; på dtypes utan tecken slår värdena runt modulo \(2^N\)), abs() (elementvist absolutbelopp; på dtypes utan tecken returneras en kopia utan beräkning), ~ (bitvis inversion, endast heltals-dtypes), len() (returnerar längden för den första axeln).
Indexering och slicing: a[i], a[i, j, ...], a[start:stop:step], indexering med boolesk mask (a[mask]) och indexering med heltalsarray (fancy indexing) stöds alla vid både läsning och skrivning.
Iteration: Iteration över en ndarray ger underarrayer längs den första axeln (ett element i taget för 1-D-arrayer). Använd flat för att iterera över varje skalärt element oavsett dimensionalitet.
Matrismultiplikationsoperatorn @ är inte implementerad; använd numpy.dot (np.dot(a, b)) i stället.
Skiftoperatorerna (<<, >>) är inte implementerade på operatornivå. Använd numpy.left_shift och numpy.right_shift för elementvisa heltalsskift.
Arraykonstruktion¶
- numpy.array(values: ndarray | list | tuple, *, dtype: int = float) ndarray¶
Konstruera en ny
ndarrayfrån en nästlad itererbar av tal. Likvärdig alternativ konstruktor förnumpy.ndarray.
- numpy.arange(start: int | float, stop: int | float | None = None, step: int | float = 1, *, dtype: int | None = None) ndarray¶
Returnera jämnt fördelade värden över det halvöppna intervallet
[start, stop). Om endast ett positionellt argument ges behandlas det somstopmedstart = 0. Om dtype utelämnas härleds det från indata (heltal om alla av start, stop, step är heltal och inom intervallet).
- numpy.asarray(a: ndarray | list | tuple, *, dtype: int | None = None) ndarray¶
Om a redan är en
ndarrayvars dtype matchar dtype (eller dtype ärNone), returneras a oförändrad; annars skapas en ny array (med begärd dtype-konvertering när den anges). Itererbara objekt konverteras som inumpy.array.
- numpy.concatenate(arrays: tuple, *, axis: int = 0) ndarray¶
Sammanfoga en sekvens av
ndarraylängs en befintlig axis. Alla indataarrayer måste dela samma dtype, ndim och form på varje axel utom axis.
- numpy.diag(a: ndarray, *, k: int = 0) ndarray¶
För en 2-D a, returnera en 1-D-array som innehåller den k:te diagonalen. För en 1-D a, returnera en 2-D kvadratisk array med a placerad på den k:te diagonalen. k kan vara positiv (ovanför huvuddiagonalen) eller negativ (under).
- numpy.empty(shape: int | tuple[int, ...], *, dtype: int = float) ndarray¶
Alias för
zeros; returnerar en nollfylld array av shape och dtype. (ulab lämnar inte bufferten oinitierad.)
- numpy.eye(N: int, M: int | None = None, k: int = 0, *, dtype: int = float) ndarray¶
Returnera en 2-D N x M-array (kvadratisk N x N om M är
None) med ettor på den k:te diagonalen och nollor på övriga platser.
- numpy.frombuffer(buffer: bytes, *, dtype: int = float, count: int = -1, offset: int = 0) ndarray¶
Tolka ett objekt med buffertprotokoll som en 1-D
ndarrayav dtype. count är antalet objekt att läsa (-1läser alla tillgängliga objekt); offset hoppar över så många byte i början av bufferten.
- numpy.full(shape: int | tuple[int, ...], fill_value: int | float | bool, *, dtype: int = float) ndarray¶
Returnera en ny array av shape och dtype med varje element satt till fill_value.
- numpy.linspace(start: float, stop: float, num: int = 50, *, endpoint: bool = True, retstep: bool = False, dtype: int = float) ndarray | tuple[ndarray, float]¶
Returnera num jämnt fördelade sampel över det slutna intervallet
[start, stop](eller halvöppet om endpoint ärFalse). När retstep ärTruereturneras en tupel(samples, step). Komplexa start/stop ger en komplex array (när stöd för komplexa tal är aktiverat).
- numpy.logspace(start: float, stop: float, num: int = 50, *, base: float = 10.0, endpoint: bool = True, dtype: int = float) ndarray¶
Returnera num sampel jämnt fördelade på en logaritmisk skala: resultatet börjar vid
base ** startoch slutar vidbase ** stop.
- numpy.meshgrid(*xi: ndarray, indexing: str = 'xy') tuple[ndarray, ...]¶
Returnera en tupel av koordinatmatriser från en sekvens av endimensionella koordinatarrayer. Med indexing
'xy'(standardvärdet) behandlas de två första indata som kartesiska koordinater och deras utdataaxlar byter plats; med'ij'används matrisbaserad indexering. Implementationen motsvarar NumPy-ekvivalenten medcopy=Trueochsparse=False.
Inspektion / utskrift¶
- numpy.get_printoptions() dict¶
Returnera de aktuella alternativen för arrayutskrift som en dict med nycklarna
thresholdochedgeitems.
- numpy.set_printoptions(*, threshold: int | None = None, edgeitems: int | None = None) None¶
Ange alternativ för arrayutskrift. threshold är det maximala antalet arrayelement som skrivs ut i sin helhet; edgeitems är antalet objekt som visas i varje ände av en axel när arrayen sammanfattas.
Jämförelse¶
- numpy.clip(a: ndarray | int | float, a_min: ndarray | int | float, a_max: ndarray | int | float) ndarray | int | float¶
Begränsa värdena i a så att
a_min <= result <= a_max. Motsvararmaximum(a_min, minimum(a, a_max)); broadcasting följer samma regler somminimum.
- numpy.equal(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | bool¶
Elementvis
x1 == x2; returnerar en booleskndarray(eller enbool-skalär om båda indata är skalärer). Tillhandahålls för portabilitet – operatorn==på arrayer ger samma resultat.
- numpy.not_equal(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | bool¶
Elementvis
x1 != x2; den booleska motsvarigheten tillequal.
- numpy.isfinite(x: ndarray | int | float) ndarray | bool¶
Returnera en boolesk array (eller skalär) som är
Truedär indata är ändlig. Heltalsindata är alltid ändliga.
- numpy.isinf(x: ndarray | int | float) ndarray | bool¶
Returnera en boolesk array (eller skalär) som är
Truedär indata är oändlig. Heltalsindata är aldrig oändliga.
- numpy.maximum(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | int | float¶
Elementvis maximum av två arrayer / skalärer. Argumenten broadcastas tillsammans; om dtypes skiljer sig uppkonverteras utdata.
- numpy.minimum(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | int | float¶
Elementvis minimum av två arrayer / skalärer; motsvarighet till
maximum.
Numeriska reduktioner¶
- numpy.all(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | bool¶
Testa huruvida alla element längs axis utvärderas till
True. Medaxis=None(standardvärdet) testas den utplattade arrayen och en endaboolreturneras.
- numpy.any(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | bool¶
Testa huruvida något element längs axis utvärderas till
True. Medaxis=Nonetestas den utplattade arrayen.
- numpy.argmax(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | int¶
Returnera indexet för det största elementet längs axis. Med
axis=Noneplattas arrayen ut och ett enda heltal returneras.
- numpy.argmin(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | int¶
Returnera indexet för det minsta elementet längs axis. Med
axis=Noneplattas arrayen ut och ett enda heltal returneras.
- numpy.argsort(a: ndarray, *, axis: int = -1) ndarray¶
Returnera en heltals-
ndarrayutan tecken vars poster sorterar a i stigande ordning längs axis. Utdatans dtype äruint16, så ingen axel får överstiga 65535 element.axis=Nonestöds inte.
- numpy.cross(a: ndarray, b: ndarray) ndarray¶
Returnera kryssprodukten av två 1-D-arrayer med längd 3.
- numpy.diff(a: ndarray, *, n: int = 1, axis: int = -1) ndarray¶
Returnera den n:te diskreta framåtdifferensen av a längs axis. n måste vara i
0..9(differentieringsstencilen lagras i enint8); längden på axis krymper med n. Numpy-nyckelordenprependochappendär inte implementerade.
- numpy.flip(a: ndarray, *, axis: int | None = None) ndarray¶
Returnera en ny array med ordningen på elementen omvänd längs axis; med
axis=Nonevänds arrayen längs varje axel.
- numpy.max(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | int | float¶
Returnera det största elementet längs axis. Med
axis=None(standardvärdet) reduceras den utplattade arrayen till en skalär. Numpy-nyckelordetoutär inte implementerat.
- numpy.min(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | int | float¶
Returnera det minsta elementet längs axis; motsvarighet till
max.
- numpy.mean(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | float¶
Returnera det aritmetiska medelvärdet längs axis. Med
axis=None(standardvärdet) returneras den utplattade arrayens medelvärde som enfloat.
- numpy.median(a: ndarray, *, axis: int | None = None) ndarray | float¶
Returnera medianen längs axis. Med
axis=Noneplattas arrayen ut först. Utdatans dtype är alltid float.
- numpy.roll(a: ndarray, shift: int, *, axis: int | None = None) ndarray¶
Returnera a med dess element rullade (cykliskt förskjutna) med shift positioner. Med
axis=None(standardvärdet) plattas arrayen ut först. Negativa förskjutningar rullar i motsatt riktning.
- numpy.sort(a: ndarray, *, axis: int = -1) ndarray¶
Returnera en sorterad kopia av a längs axis med heap sort. Med
axis=Noneplattas arrayen ut först. Numpy-nyckelordenkindochorderär inte implementerade.
Statistik¶
- numpy.bincount(x: ndarray, *, weights: ndarray | None = None, minlength: int | None = None) ndarray¶
Räkna antalet förekomster av varje värde i den endimensionella, icke-negativa heltalsarrayen x. Dtypen för x måste vara
uint8elleruint16. Om weights anges bidrar varje post i x med sin matchande vikt i stället för1och utdata är av dtypenfloat; annars är utdata av dtypenuint16. Om minlength anges har utdataarrayen minst så många element (extra poster är noll).
Transformera¶
- numpy.compress(condition: ndarray | list | tuple, a: ndarray, *, axis: int | None = None) ndarray¶
Returnera utsnitt av a valda längs axis av den booleska condition. Med
axis=Noneanvänds den utplattade arrayen.
- numpy.delete(a: ndarray, indices: int | ndarray | list | tuple | range, *, axis: int | None = None) ndarray¶
Returnera en kopia av a med posterna vid indices borttagna längs axis. Med
axis=Noneplattas arrayen ut först. Negativa index räknas från slutet av axis; indices sorteras internt före borttagning.
Approximation¶
- numpy.interp(x: ndarray, xp: ndarray, fp: ndarray, *, left: float | None = None, right: float | None = None) ndarray¶
Endimensionell linjär interpolation. xp måste vara en monotont stigande 1-D-array av oberoende värden; fp innehåller motsvarande beroende värden; x är de punkter vid vilka interpolanten utvärderas. left och right åsidosätter värdet som returneras för
x < xp[0]respektivex > xp[-1](standardvärden:fp[0]ochfp[-1]).
Urval¶
- numpy.take(a: ndarray, indices: ndarray | list | tuple, *, axis: int | None = None, out: ndarray | None = None, mode: str | None = None) ndarray¶
Hämta element från a vid de givna indices längs axis. Med
axis=Noneanvänds den utplattade arrayen. mode väljer beteendet utanför gränserna:"raise"(standard – ger upphov tillValueError),"wrap"(modulo axellängden) eller"clip"(begränsa till det giltiga intervallet; negativa index är inte tillåtna). Om out anges skrivs resultatet in i den.
Bitvis¶
- numpy.bitwise_and(x1: ndarray, x2: ndarray) ndarray¶
Elementvis bitvis AND av två heltalsarrayer; broadcasting stöds. En dtype som inte är heltal ger upphov till ett undantag.
Filtrering¶
Polynom¶
- numpy.polyfit(y: ndarray | list | tuple, deg: int) ndarray
Anpassa ett polynom av grad deg till datapunkterna
(x, y)med minsta kvadratmetoden och returnera polynomets koefficienter (högsta graden först). Om x utelämnas användsrange(len(y)). Ger upphov tillValueErrorom längderna på x och y skiljer sig.
I/O¶
- numpy.load(file: str) ndarray¶
Läs en array som tidigare skrevs med
savefrån file (numpys plattformsoberoende.npy-format). Endianness konverteras i farten om filens byteordning skiljer sig från värddatorns.
- numpy.loadtxt(file: str, *, delimiter: str | None = None, comments: str = '#', max_rows: int = -1, usecols: int | ndarray | list | tuple | None = None, dtype: int = float, skiprows: int = 0) ndarray¶
Läs numeriska data från en text-file och returnera dem som en
ndarray. delimiter har som standard blanksteg; comments är radkommentarsmarkören; max_rows begränsar antalet datarader som läses (-1för alla); usecols väljer kolumner efter index; skiprows hoppar över så många inledande rader. Om dtype inte är float konverteras värdena genom avrundning.
- numpy.savetxt(file: str, a: ndarray, *, delimiter: str = ' ', header: str | None = None, footer: str | None = None, comments: str = '# ') None¶
Skriv a till file som text. delimiter separerar värden inom en rad; header och footer, om de anges, skrivs före/efter datan, var och en prefixad med comments. Värden skrivs som flyttal.
Komplexa hjälpfunktioner¶
Dessa funktioner är endast tillgängliga när ulab kompilerades med stöd för komplexa tal (ULAB_SUPPORTS_COMPLEX).
- numpy.real(val: ndarray) ndarray¶
Returnera realdelen av val. För indata med reell dtype returneras en kopia som bevarar dtypen; för komplex indata returneras en float-
ndarray.
- numpy.imag(val: ndarray) ndarray¶
Returnera imaginärdelen av val. För indata med reell dtype returneras en array av nollor med samma dtype; för komplex indata returneras en float-
ndarray.
Universella funktioner¶
Elementvisa matematiska funktioner. Var och en accepterar en skalär eller en ndarray och returnerar ett resultat av matchande form (en float-skalär för skalär indata, en ndarray för arrayindata). När de anropas med en ndarray är resultatet en ny ndarray med flyttal; ett valfritt out-nyckelord kan skickas för att skriva resultatet in i en förallokerad float-ndarray av samma storlek.
- numpy.acos(x: ndarray | float, /) ndarray | float¶
Beräkna inverskosinus (arcuscosinus) av varje element i x; resultatet är i radianer.
- numpy.acosh(x: ndarray | float, /) ndarray | float¶
Beräkna invers hyperbolisk cosinus av varje element i x.
- numpy.arctan2(y: ndarray | float, x: ndarray | float, /) ndarray | float¶
Beräkna den tvåargumentsinversa tangenten
atan2(y, x)elementvis; stöder broadcasting mellan de två indata.
- numpy.around(x: ndarray, /, decimals: int = 0) ndarray¶
Avrunda elementen i
ndarrayx till det givna antalet decimals; det första argumentet måste vara enndarray.
- numpy.asin(x: ndarray | float, /) ndarray | float¶
Beräkna inverssinus (arcussinus) av varje element i x; resultatet är i radianer.
- numpy.asinh(x: ndarray | float, /) ndarray | float¶
Beräkna invers hyperbolisk sinus av varje element i x.
- numpy.atan(x: ndarray | float, /) ndarray | float¶
Beräkna inverstangent (arcustangens) av varje element i x; resultatet är i radianer.
- numpy.atanh(x: ndarray | float, /) ndarray | float¶
Beräkna invers hyperbolisk tangent av varje element i x.
- numpy.ceil(x: ndarray | float, /) ndarray | float¶
Beräkna taket (det minsta heltalet som inte är mindre än värdet) för varje element i x.
- numpy.cos(x: ndarray | float, /) ndarray | float¶
Beräkna cosinus av varje element i x (i radianer).
- numpy.cosh(x: ndarray | float, /) ndarray | float¶
Beräkna hyperbolisk cosinus av varje element i x.
- numpy.degrees(x: ndarray | float, /) ndarray | float¶
Konvertera varje element i x från radianer till grader.
- numpy.exp(x: ndarray | float, /) ndarray | float¶
Beräkna exponentialen
e**xav varje element i x; kan returnera en komplexndarrayvid komplex indata (om stöd för komplexa tal är aktiverat).
- numpy.expm1(x: ndarray | float, /) ndarray | float¶
Beräkna
exp(x) - 1av varje element i x med förbättrad precision nära noll.
- numpy.floor(x: ndarray | float, /) ndarray | float¶
Beräkna golvet (det största heltalet som inte är större än värdet) för varje element i x.
- numpy.log(x: ndarray | float, /) ndarray | float¶
Beräkna den naturliga logaritmen av varje element i x.
- numpy.radians(x: ndarray | float, /) ndarray | float¶
Konvertera varje element i x från grader till radianer.
- numpy.sinc(x: ndarray | float, /) ndarray | float¶
Beräkna den normaliserade sinc-funktionen
sin(pi*x) / (pi*x)av varje element i x.
- numpy.sqrt(x: ndarray | float, /, *, dtype: int = float) ndarray | float¶
Beräkna kvadratroten av varje element i x; skicka
dtype=numpy.complexför att erhålla komplexa resultat för negativa reella indata (om stöd för komplexa tal är aktiverat).
- numpy.tan(x: ndarray | float, /) ndarray | float¶
Beräkna tangenten av varje element i x (i radianer).