| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449 |
- ===========
- Numpy C-API
- ===========
- ::
- unsigned int
- PyArray_GetNDArrayCVersion(void )
- Included at the very first so not auto-grabbed and thus not labeled.
- ::
- int
- PyArray_SetNumericOps(PyObject *dict)
- Set internal structure with number functions that all arrays will use
- ::
- PyObject *
- PyArray_GetNumericOps(void )
- Get dictionary showing number functions that all arrays will use
- ::
- int
- PyArray_INCREF(PyArrayObject *mp)
- For object arrays, increment all internal references.
- ::
- int
- PyArray_XDECREF(PyArrayObject *mp)
- Decrement all internal references for object arrays.
- (or arrays with object fields)
- ::
- void
- PyArray_SetStringFunction(PyObject *op, int repr)
- Set the array print function to be a Python function.
- ::
- PyArray_Descr *
- PyArray_DescrFromType(int type)
- Get the PyArray_Descr structure for a type.
- ::
- PyObject *
- PyArray_TypeObjectFromType(int type)
- Get a typeobject from a type-number -- can return NULL.
- New reference
- ::
- char *
- PyArray_Zero(PyArrayObject *arr)
- Get pointer to zero of correct type for array.
- ::
- char *
- PyArray_One(PyArrayObject *arr)
- Get pointer to one of correct type for array
- ::
- PyObject *
- PyArray_CastToType(PyArrayObject *arr, PyArray_Descr *dtype, int
- is_f_order)
- For backward compatibility
- Cast an array using typecode structure.
- steals reference to dtype --- cannot be NULL
- This function always makes a copy of arr, even if the dtype
- doesn't change.
- ::
- int
- PyArray_CastTo(PyArrayObject *out, PyArrayObject *mp)
- Cast to an already created array.
- ::
- int
- PyArray_CastAnyTo(PyArrayObject *out, PyArrayObject *mp)
- Cast to an already created array. Arrays don't have to be "broadcastable"
- Only requirement is they have the same number of elements.
- ::
- int
- PyArray_CanCastSafely(int fromtype, int totype)
- Check the type coercion rules.
- ::
- npy_bool
- PyArray_CanCastTo(PyArray_Descr *from, PyArray_Descr *to)
- leaves reference count alone --- cannot be NULL
- PyArray_CanCastTypeTo is equivalent to this, but adds a 'casting'
- parameter.
- ::
- int
- PyArray_ObjectType(PyObject *op, int minimum_type)
- Return the typecode of the array a Python object would be converted to
- Returns the type number the result should have, or NPY_NOTYPE on error.
- ::
- PyArray_Descr *
- PyArray_DescrFromObject(PyObject *op, PyArray_Descr *mintype)
- new reference -- accepts NULL for mintype
- ::
- PyArrayObject **
- PyArray_ConvertToCommonType(PyObject *op, int *retn)
- ::
- PyArray_Descr *
- PyArray_DescrFromScalar(PyObject *sc)
- Return descr object from array scalar.
- New reference
- ::
- PyArray_Descr *
- PyArray_DescrFromTypeObject(PyObject *type)
- ::
- npy_intp
- PyArray_Size(PyObject *op)
- Compute the size of an array (in number of items)
- ::
- PyObject *
- PyArray_Scalar(void *data, PyArray_Descr *descr, PyObject *base)
- Get scalar-equivalent to a region of memory described by a descriptor.
- ::
- PyObject *
- PyArray_FromScalar(PyObject *scalar, PyArray_Descr *outcode)
- Get 0-dim array from scalar
- 0-dim array from array-scalar object
- always contains a copy of the data
- unless outcode is NULL, it is of void type and the referrer does
- not own it either.
- steals reference to outcode
- ::
- void
- PyArray_ScalarAsCtype(PyObject *scalar, void *ctypeptr)
- Convert to c-type
- no error checking is performed -- ctypeptr must be same type as scalar
- in case of flexible type, the data is not copied
- into ctypeptr which is expected to be a pointer to pointer
- ::
- int
- PyArray_CastScalarToCtype(PyObject *scalar, void
- *ctypeptr, PyArray_Descr *outcode)
- Cast Scalar to c-type
- The output buffer must be large-enough to receive the value
- Even for flexible types which is different from ScalarAsCtype
- where only a reference for flexible types is returned
- This may not work right on narrow builds for NumPy unicode scalars.
- ::
- int
- PyArray_CastScalarDirect(PyObject *scalar, PyArray_Descr
- *indescr, void *ctypeptr, int outtype)
- Cast Scalar to c-type
- ::
- PyObject *
- PyArray_ScalarFromObject(PyObject *object)
- Get an Array Scalar From a Python Object
- Returns NULL if unsuccessful but error is only set if another error occurred.
- Currently only Numeric-like object supported.
- ::
- PyArray_VectorUnaryFunc *
- PyArray_GetCastFunc(PyArray_Descr *descr, int type_num)
- Get a cast function to cast from the input descriptor to the
- output type_number (must be a registered data-type).
- Returns NULL if un-successful.
- ::
- PyObject *
- PyArray_FromDims(int nd, int *d, int type)
- Construct an empty array from dimensions and typenum
- ::
- PyObject *
- PyArray_FromDimsAndDataAndDescr(int nd, int *d, PyArray_Descr
- *descr, char *data)
- Like FromDimsAndData but uses the Descr structure instead of typecode
- as input.
- ::
- PyObject *
- PyArray_FromAny(PyObject *op, PyArray_Descr *newtype, int
- min_depth, int max_depth, int flags, PyObject
- *context)
- Does not check for NPY_ARRAY_ENSURECOPY and NPY_ARRAY_NOTSWAPPED in flags
- Steals a reference to newtype --- which can be NULL
- ::
- PyObject *
- PyArray_EnsureArray(PyObject *op)
- This is a quick wrapper around PyArray_FromAny(op, NULL, 0, 0, ENSUREARRAY)
- that special cases Arrays and PyArray_Scalars up front
- It *steals a reference* to the object
- It also guarantees that the result is PyArray_Type
- Because it decrefs op if any conversion needs to take place
- so it can be used like PyArray_EnsureArray(some_function(...))
- ::
- PyObject *
- PyArray_EnsureAnyArray(PyObject *op)
- ::
- PyObject *
- PyArray_FromFile(FILE *fp, PyArray_Descr *dtype, npy_intp num, char
- *sep)
- Given a ``FILE *`` pointer ``fp``, and a ``PyArray_Descr``, return an
- array corresponding to the data encoded in that file.
- If the dtype is NULL, the default array type is used (double).
- If non-null, the reference is stolen.
- The number of elements to read is given as ``num``; if it is < 0, then
- then as many as possible are read.
- If ``sep`` is NULL or empty, then binary data is assumed, else
- text data, with ``sep`` as the separator between elements. Whitespace in
- the separator matches any length of whitespace in the text, and a match
- for whitespace around the separator is added.
- For memory-mapped files, use the buffer interface. No more data than
- necessary is read by this routine.
- ::
- PyObject *
- PyArray_FromString(char *data, npy_intp slen, PyArray_Descr
- *dtype, npy_intp num, char *sep)
- Given a pointer to a string ``data``, a string length ``slen``, and
- a ``PyArray_Descr``, return an array corresponding to the data
- encoded in that string.
- If the dtype is NULL, the default array type is used (double).
- If non-null, the reference is stolen.
- If ``slen`` is < 0, then the end of string is used for text data.
- It is an error for ``slen`` to be < 0 for binary data (since embedded NULLs
- would be the norm).
- The number of elements to read is given as ``num``; if it is < 0, then
- then as many as possible are read.
- If ``sep`` is NULL or empty, then binary data is assumed, else
- text data, with ``sep`` as the separator between elements. Whitespace in
- the separator matches any length of whitespace in the text, and a match
- for whitespace around the separator is added.
- ::
- PyObject *
- PyArray_FromBuffer(PyObject *buf, PyArray_Descr *type, npy_intp
- count, npy_intp offset)
- ::
- PyObject *
- PyArray_FromIter(PyObject *obj, PyArray_Descr *dtype, npy_intp count)
- steals a reference to dtype (which cannot be NULL)
- ::
- PyObject *
- PyArray_Return(PyArrayObject *mp)
- Return either an array or the appropriate Python object if the array
- is 0d and matches a Python type.
- steals reference to mp
- ::
- PyObject *
- PyArray_GetField(PyArrayObject *self, PyArray_Descr *typed, int
- offset)
- Get a subset of bytes from each element of the array
- steals reference to typed, must not be NULL
- ::
- int
- PyArray_SetField(PyArrayObject *self, PyArray_Descr *dtype, int
- offset, PyObject *val)
- Set a subset of bytes from each element of the array
- steals reference to dtype, must not be NULL
- ::
- PyObject *
- PyArray_Byteswap(PyArrayObject *self, npy_bool inplace)
- ::
- PyObject *
- PyArray_Resize(PyArrayObject *self, PyArray_Dims *newshape, int
- refcheck, NPY_ORDER order)
- Resize (reallocate data). Only works if nothing else is referencing this
- array and it is contiguous. If refcheck is 0, then the reference count is
- not checked and assumed to be 1. You still must own this data and have no
- weak-references and no base object.
- ::
- int
- PyArray_MoveInto(PyArrayObject *dst, PyArrayObject *src)
- Move the memory of one array into another, allowing for overlapping data.
- Returns 0 on success, negative on failure.
- ::
- int
- PyArray_CopyInto(PyArrayObject *dst, PyArrayObject *src)
- Copy an Array into another array.
- Broadcast to the destination shape if necessary.
- Returns 0 on success, -1 on failure.
- ::
- int
- PyArray_CopyAnyInto(PyArrayObject *dst, PyArrayObject *src)
- Copy an Array into another array -- memory must not overlap
- Does not require src and dest to have "broadcastable" shapes
- (only the same number of elements).
- TODO: For NumPy 2.0, this could accept an order parameter which
- only allows NPY_CORDER and NPY_FORDER. Could also rename
- this to CopyAsFlat to make the name more intuitive.
- Returns 0 on success, -1 on error.
- ::
- int
- PyArray_CopyObject(PyArrayObject *dest, PyObject *src_object)
- ::
- PyObject *
- PyArray_NewCopy(PyArrayObject *obj, NPY_ORDER order)
- Copy an array.
- ::
- PyObject *
- PyArray_ToList(PyArrayObject *self)
- To List
- ::
- PyObject *
- PyArray_ToString(PyArrayObject *self, NPY_ORDER order)
- ::
- int
- PyArray_ToFile(PyArrayObject *self, FILE *fp, char *sep, char *format)
- To File
- ::
- int
- PyArray_Dump(PyObject *self, PyObject *file, int protocol)
- ::
- PyObject *
- PyArray_Dumps(PyObject *self, int protocol)
- ::
- int
- PyArray_ValidType(int type)
- Is the typenum valid?
- ::
- void
- PyArray_UpdateFlags(PyArrayObject *ret, int flagmask)
- Update Several Flags at once.
- ::
- PyObject *
- PyArray_New(PyTypeObject *subtype, int nd, npy_intp *dims, int
- type_num, npy_intp *strides, void *data, int itemsize, int
- flags, PyObject *obj)
- Generic new array creation routine.
- ::
- PyObject *
- PyArray_NewFromDescr(PyTypeObject *subtype, PyArray_Descr *descr, int
- nd, npy_intp *dims, npy_intp *strides, void
- *data, int flags, PyObject *obj)
- Generic new array creation routine.
- steals a reference to descr (even on failure)
- ::
- PyArray_Descr *
- PyArray_DescrNew(PyArray_Descr *base)
- base cannot be NULL
- ::
- PyArray_Descr *
- PyArray_DescrNewFromType(int type_num)
- ::
- double
- PyArray_GetPriority(PyObject *obj, double default_)
- Get Priority from object
- ::
- PyObject *
- PyArray_IterNew(PyObject *obj)
- Get Iterator.
- ::
- PyObject *
- PyArray_MultiIterNew(int n, ... )
- Get MultiIterator,
- ::
- int
- PyArray_PyIntAsInt(PyObject *o)
- ::
- npy_intp
- PyArray_PyIntAsIntp(PyObject *o)
- ::
- int
- PyArray_Broadcast(PyArrayMultiIterObject *mit)
- ::
- void
- PyArray_FillObjectArray(PyArrayObject *arr, PyObject *obj)
- Assumes contiguous
- ::
- int
- PyArray_FillWithScalar(PyArrayObject *arr, PyObject *obj)
- ::
- npy_bool
- PyArray_CheckStrides(int elsize, int nd, npy_intp numbytes, npy_intp
- offset, npy_intp *dims, npy_intp *newstrides)
- ::
- PyArray_Descr *
- PyArray_DescrNewByteorder(PyArray_Descr *self, char newendian)
- returns a copy of the PyArray_Descr structure with the byteorder
- altered:
- no arguments: The byteorder is swapped (in all subfields as well)
- single argument: The byteorder is forced to the given state
- (in all subfields as well)
- Valid states: ('big', '>') or ('little' or '<')
- ('native', or '=')
- If a descr structure with | is encountered it's own
- byte-order is not changed but any fields are:
- Deep bytorder change of a data-type descriptor
- Leaves reference count of self unchanged --- does not DECREF self ***
- ::
- PyObject *
- PyArray_IterAllButAxis(PyObject *obj, int *inaxis)
- Get Iterator that iterates over all but one axis (don't use this with
- PyArray_ITER_GOTO1D). The axis will be over-written if negative
- with the axis having the smallest stride.
- ::
- PyObject *
- PyArray_CheckFromAny(PyObject *op, PyArray_Descr *descr, int
- min_depth, int max_depth, int requires, PyObject
- *context)
- steals a reference to descr -- accepts NULL
- ::
- PyObject *
- PyArray_FromArray(PyArrayObject *arr, PyArray_Descr *newtype, int
- flags)
- steals reference to newtype --- acc. NULL
- ::
- PyObject *
- PyArray_FromInterface(PyObject *origin)
- ::
- PyObject *
- PyArray_FromStructInterface(PyObject *input)
- ::
- PyObject *
- PyArray_FromArrayAttr(PyObject *op, PyArray_Descr *typecode, PyObject
- *context)
- ::
- NPY_SCALARKIND
- PyArray_ScalarKind(int typenum, PyArrayObject **arr)
- ScalarKind
- Returns the scalar kind of a type number, with an
- optional tweak based on the scalar value itself.
- If no scalar is provided, it returns INTPOS_SCALAR
- for both signed and unsigned integers, otherwise
- it checks the sign of any signed integer to choose
- INTNEG_SCALAR when appropriate.
- ::
- int
- PyArray_CanCoerceScalar(int thistype, int neededtype, NPY_SCALARKIND
- scalar)
- Determines whether the data type 'thistype', with
- scalar kind 'scalar', can be coerced into 'neededtype'.
- ::
- PyObject *
- PyArray_NewFlagsObject(PyObject *obj)
- Get New ArrayFlagsObject
- ::
- npy_bool
- PyArray_CanCastScalar(PyTypeObject *from, PyTypeObject *to)
- See if array scalars can be cast.
- TODO: For NumPy 2.0, add a NPY_CASTING parameter.
- ::
- int
- PyArray_CompareUCS4(npy_ucs4 *s1, npy_ucs4 *s2, size_t len)
- ::
- int
- PyArray_RemoveSmallest(PyArrayMultiIterObject *multi)
- Adjusts previously broadcasted iterators so that the axis with
- the smallest sum of iterator strides is not iterated over.
- Returns dimension which is smallest in the range [0,multi->nd).
- A -1 is returned if multi->nd == 0.
- don't use with PyArray_ITER_GOTO1D because factors are not adjusted
- ::
- int
- PyArray_ElementStrides(PyObject *obj)
- ::
- void
- PyArray_Item_INCREF(char *data, PyArray_Descr *descr)
- ::
- void
- PyArray_Item_XDECREF(char *data, PyArray_Descr *descr)
- ::
- PyObject *
- PyArray_FieldNames(PyObject *fields)
- Return the tuple of ordered field names from a dictionary.
- ::
- PyObject *
- PyArray_Transpose(PyArrayObject *ap, PyArray_Dims *permute)
- Return Transpose.
- ::
- PyObject *
- PyArray_TakeFrom(PyArrayObject *self0, PyObject *indices0, int
- axis, PyArrayObject *out, NPY_CLIPMODE clipmode)
- Take
- ::
- PyObject *
- PyArray_PutTo(PyArrayObject *self, PyObject*values0, PyObject
- *indices0, NPY_CLIPMODE clipmode)
- Put values into an array
- ::
- PyObject *
- PyArray_PutMask(PyArrayObject *self, PyObject*values0, PyObject*mask0)
- Put values into an array according to a mask.
- ::
- PyObject *
- PyArray_Repeat(PyArrayObject *aop, PyObject *op, int axis)
- Repeat the array.
- ::
- PyObject *
- PyArray_Choose(PyArrayObject *ip, PyObject *op, PyArrayObject
- *out, NPY_CLIPMODE clipmode)
- ::
- int
- PyArray_Sort(PyArrayObject *op, int axis, NPY_SORTKIND which)
- Sort an array in-place
- ::
- PyObject *
- PyArray_ArgSort(PyArrayObject *op, int axis, NPY_SORTKIND which)
- ArgSort an array
- ::
- PyObject *
- PyArray_SearchSorted(PyArrayObject *op1, PyObject *op2, NPY_SEARCHSIDE
- side, PyObject *perm)
- Search the sorted array op1 for the location of the items in op2. The
- result is an array of indexes, one for each element in op2, such that if
- the item were to be inserted in op1 just before that index the array
- would still be in sorted order.
- Parameters
- ----------
- op1 : PyArrayObject *
- Array to be searched, must be 1-D.
- op2 : PyObject *
- Array of items whose insertion indexes in op1 are wanted
- side : {NPY_SEARCHLEFT, NPY_SEARCHRIGHT}
- If NPY_SEARCHLEFT, return first valid insertion indexes
- If NPY_SEARCHRIGHT, return last valid insertion indexes
- perm : PyObject *
- Permutation array that sorts op1 (optional)
- Returns
- -------
- ret : PyObject *
- New reference to npy_intp array containing indexes where items in op2
- could be validly inserted into op1. NULL on error.
- Notes
- -----
- Binary search is used to find the indexes.
- ::
- PyObject *
- PyArray_ArgMax(PyArrayObject *op, int axis, PyArrayObject *out)
- ArgMax
- ::
- PyObject *
- PyArray_ArgMin(PyArrayObject *op, int axis, PyArrayObject *out)
- ArgMin
- ::
- PyObject *
- PyArray_Reshape(PyArrayObject *self, PyObject *shape)
- Reshape
- ::
- PyObject *
- PyArray_Newshape(PyArrayObject *self, PyArray_Dims *newdims, NPY_ORDER
- order)
- New shape for an array
- ::
- PyObject *
- PyArray_Squeeze(PyArrayObject *self)
- return a new view of the array object with all of its unit-length
- dimensions squeezed out if needed, otherwise
- return the same array.
- ::
- PyObject *
- PyArray_View(PyArrayObject *self, PyArray_Descr *type, PyTypeObject
- *pytype)
- View
- steals a reference to type -- accepts NULL
- ::
- PyObject *
- PyArray_SwapAxes(PyArrayObject *ap, int a1, int a2)
- SwapAxes
- ::
- PyObject *
- PyArray_Max(PyArrayObject *ap, int axis, PyArrayObject *out)
- Max
- ::
- PyObject *
- PyArray_Min(PyArrayObject *ap, int axis, PyArrayObject *out)
- Min
- ::
- PyObject *
- PyArray_Ptp(PyArrayObject *ap, int axis, PyArrayObject *out)
- Ptp
- ::
- PyObject *
- PyArray_Mean(PyArrayObject *self, int axis, int rtype, PyArrayObject
- *out)
- Mean
- ::
- PyObject *
- PyArray_Trace(PyArrayObject *self, int offset, int axis1, int
- axis2, int rtype, PyArrayObject *out)
- Trace
- ::
- PyObject *
- PyArray_Diagonal(PyArrayObject *self, int offset, int axis1, int
- axis2)
- Diagonal
- In NumPy versions prior to 1.7, this function always returned a copy of
- the diagonal array. In 1.7, the code has been updated to compute a view
- onto 'self', but it still copies this array before returning, as well as
- setting the internal WARN_ON_WRITE flag. In a future version, it will
- simply return a view onto self.
- ::
- PyObject *
- PyArray_Clip(PyArrayObject *self, PyObject *min, PyObject
- *max, PyArrayObject *out)
- Clip
- ::
- PyObject *
- PyArray_Conjugate(PyArrayObject *self, PyArrayObject *out)
- Conjugate
- ::
- PyObject *
- PyArray_Nonzero(PyArrayObject *self)
- Nonzero
- TODO: In NumPy 2.0, should make the iteration order a parameter.
- ::
- PyObject *
- PyArray_Std(PyArrayObject *self, int axis, int rtype, PyArrayObject
- *out, int variance)
- Set variance to 1 to by-pass square-root calculation and return variance
- Std
- ::
- PyObject *
- PyArray_Sum(PyArrayObject *self, int axis, int rtype, PyArrayObject
- *out)
- Sum
- ::
- PyObject *
- PyArray_CumSum(PyArrayObject *self, int axis, int rtype, PyArrayObject
- *out)
- CumSum
- ::
- PyObject *
- PyArray_Prod(PyArrayObject *self, int axis, int rtype, PyArrayObject
- *out)
- Prod
- ::
- PyObject *
- PyArray_CumProd(PyArrayObject *self, int axis, int
- rtype, PyArrayObject *out)
- CumProd
- ::
- PyObject *
- PyArray_All(PyArrayObject *self, int axis, PyArrayObject *out)
- All
- ::
- PyObject *
- PyArray_Any(PyArrayObject *self, int axis, PyArrayObject *out)
- Any
- ::
- PyObject *
- PyArray_Compress(PyArrayObject *self, PyObject *condition, int
- axis, PyArrayObject *out)
- Compress
- ::
- PyObject *
- PyArray_Flatten(PyArrayObject *a, NPY_ORDER order)
- Flatten
- ::
- PyObject *
- PyArray_Ravel(PyArrayObject *arr, NPY_ORDER order)
- Ravel
- Returns a contiguous array
- ::
- npy_intp
- PyArray_MultiplyList(npy_intp *l1, int n)
- Multiply a List
- ::
- int
- PyArray_MultiplyIntList(int *l1, int n)
- Multiply a List of ints
- ::
- void *
- PyArray_GetPtr(PyArrayObject *obj, npy_intp*ind)
- Produce a pointer into array
- ::
- int
- PyArray_CompareLists(npy_intp *l1, npy_intp *l2, int n)
- Compare Lists
- ::
- int
- PyArray_AsCArray(PyObject **op, void *ptr, npy_intp *dims, int
- nd, PyArray_Descr*typedescr)
- Simulate a C-array
- steals a reference to typedescr -- can be NULL
- ::
- int
- PyArray_As1D(PyObject **op, char **ptr, int *d1, int typecode)
- Convert to a 1D C-array
- ::
- int
- PyArray_As2D(PyObject **op, char ***ptr, int *d1, int *d2, int
- typecode)
- Convert to a 2D C-array
- ::
- int
- PyArray_Free(PyObject *op, void *ptr)
- Free pointers created if As2D is called
- ::
- int
- PyArray_Converter(PyObject *object, PyObject **address)
- Useful to pass as converter function for O& processing in PyArgs_ParseTuple.
- This conversion function can be used with the "O&" argument for
- PyArg_ParseTuple. It will immediately return an object of array type
- or will convert to a NPY_ARRAY_CARRAY any other object.
- If you use PyArray_Converter, you must DECREF the array when finished
- as you get a new reference to it.
- ::
- int
- PyArray_IntpFromSequence(PyObject *seq, npy_intp *vals, int maxvals)
- PyArray_IntpFromSequence
- Returns the number of integers converted or -1 if an error occurred.
- vals must be large enough to hold maxvals
- ::
- PyObject *
- PyArray_Concatenate(PyObject *op, int axis)
- Concatenate
- Concatenate an arbitrary Python sequence into an array.
- op is a python object supporting the sequence interface.
- Its elements will be concatenated together to form a single
- multidimensional array. If axis is NPY_MAXDIMS or bigger, then
- each sequence object will be flattened before concatenation
- ::
- PyObject *
- PyArray_InnerProduct(PyObject *op1, PyObject *op2)
- Numeric.innerproduct(a,v)
- ::
- PyObject *
- PyArray_MatrixProduct(PyObject *op1, PyObject *op2)
- Numeric.matrixproduct(a,v)
- just like inner product but does the swapaxes stuff on the fly
- ::
- PyObject *
- PyArray_CopyAndTranspose(PyObject *op)
- Copy and Transpose
- Could deprecate this function, as there isn't a speed benefit over
- calling Transpose and then Copy.
- ::
- PyObject *
- PyArray_Correlate(PyObject *op1, PyObject *op2, int mode)
- Numeric.correlate(a1,a2,mode)
- ::
- int
- PyArray_TypestrConvert(int itemsize, int gentype)
- Typestr converter
- ::
- int
- PyArray_DescrConverter(PyObject *obj, PyArray_Descr **at)
- Get typenum from an object -- None goes to NPY_DEFAULT_TYPE
- This function takes a Python object representing a type and converts it
- to a the correct PyArray_Descr * structure to describe the type.
- Many objects can be used to represent a data-type which in NumPy is
- quite a flexible concept.
- This is the central code that converts Python objects to
- Type-descriptor objects that are used throughout numpy.
- Returns a new reference in *at, but the returned should not be
- modified as it may be one of the canonical immutable objects or
- a reference to the input obj.
- ::
- int
- PyArray_DescrConverter2(PyObject *obj, PyArray_Descr **at)
- Get typenum from an object -- None goes to NULL
- ::
- int
- PyArray_IntpConverter(PyObject *obj, PyArray_Dims *seq)
- Get intp chunk from sequence
- This function takes a Python sequence object and allocates and
- fills in an intp array with the converted values.
- Remember to free the pointer seq.ptr when done using
- PyDimMem_FREE(seq.ptr)**
- ::
- int
- PyArray_BufferConverter(PyObject *obj, PyArray_Chunk *buf)
- Get buffer chunk from object
- this function takes a Python object which exposes the (single-segment)
- buffer interface and returns a pointer to the data segment
- You should increment the reference count by one of buf->base
- if you will hang on to a reference
- You only get a borrowed reference to the object. Do not free the
- memory...
- ::
- int
- PyArray_AxisConverter(PyObject *obj, int *axis)
- Get axis from an object (possibly None) -- a converter function,
- See also PyArray_ConvertMultiAxis, which also handles a tuple of axes.
- ::
- int
- PyArray_BoolConverter(PyObject *object, npy_bool *val)
- Convert an object to true / false
- ::
- int
- PyArray_ByteorderConverter(PyObject *obj, char *endian)
- Convert object to endian
- ::
- int
- PyArray_OrderConverter(PyObject *object, NPY_ORDER *val)
- Convert an object to FORTRAN / C / ANY / KEEP
- ::
- unsigned char
- PyArray_EquivTypes(PyArray_Descr *type1, PyArray_Descr *type2)
- This function returns true if the two typecodes are
- equivalent (same basic kind and same itemsize).
- ::
- PyObject *
- PyArray_Zeros(int nd, npy_intp *dims, PyArray_Descr *type, int
- is_f_order)
- Zeros
- steal a reference
- accepts NULL type
- ::
- PyObject *
- PyArray_Empty(int nd, npy_intp *dims, PyArray_Descr *type, int
- is_f_order)
- Empty
- accepts NULL type
- steals referenct to type
- ::
- PyObject *
- PyArray_Where(PyObject *condition, PyObject *x, PyObject *y)
- Where
- ::
- PyObject *
- PyArray_Arange(double start, double stop, double step, int type_num)
- Arange,
- ::
- PyObject *
- PyArray_ArangeObj(PyObject *start, PyObject *stop, PyObject
- *step, PyArray_Descr *dtype)
- ArangeObj,
- this doesn't change the references
- ::
- int
- PyArray_SortkindConverter(PyObject *obj, NPY_SORTKIND *sortkind)
- Convert object to sort kind
- ::
- PyObject *
- PyArray_LexSort(PyObject *sort_keys, int axis)
- LexSort an array providing indices that will sort a collection of arrays
- lexicographically. The first key is sorted on first, followed by the second key
- -- requires that arg"merge"sort is available for each sort_key
- Returns an index array that shows the indexes for the lexicographic sort along
- the given axis.
- ::
- PyObject *
- PyArray_Round(PyArrayObject *a, int decimals, PyArrayObject *out)
- Round
- ::
- unsigned char
- PyArray_EquivTypenums(int typenum1, int typenum2)
- ::
- int
- PyArray_RegisterDataType(PyArray_Descr *descr)
- Register Data type
- Does not change the reference count of descr
- ::
- int
- PyArray_RegisterCastFunc(PyArray_Descr *descr, int
- totype, PyArray_VectorUnaryFunc *castfunc)
- Register Casting Function
- Replaces any function currently stored.
- ::
- int
- PyArray_RegisterCanCast(PyArray_Descr *descr, int
- totype, NPY_SCALARKIND scalar)
- Register a type number indicating that a descriptor can be cast
- to it safely
- ::
- void
- PyArray_InitArrFuncs(PyArray_ArrFuncs *f)
- Initialize arrfuncs to NULL
- ::
- PyObject *
- PyArray_IntTupleFromIntp(int len, npy_intp *vals)
- PyArray_IntTupleFromIntp
- ::
- int
- PyArray_TypeNumFromName(char *str)
- ::
- int
- PyArray_ClipmodeConverter(PyObject *object, NPY_CLIPMODE *val)
- Convert an object to NPY_RAISE / NPY_CLIP / NPY_WRAP
- ::
- int
- PyArray_OutputConverter(PyObject *object, PyArrayObject **address)
- Useful to pass as converter function for O& processing in
- PyArgs_ParseTuple for output arrays
- ::
- PyObject *
- PyArray_BroadcastToShape(PyObject *obj, npy_intp *dims, int nd)
- Get Iterator broadcast to a particular shape
- ::
- void
- _PyArray_SigintHandler(int signum)
- ::
- void*
- _PyArray_GetSigintBuf(void )
- ::
- int
- PyArray_DescrAlignConverter(PyObject *obj, PyArray_Descr **at)
- Get type-descriptor from an object forcing alignment if possible
- None goes to DEFAULT type.
- any object with the .fields attribute and/or .itemsize attribute (if the
- .fields attribute does not give the total size -- i.e. a partial record
- naming). If itemsize is given it must be >= size computed from fields
- The .fields attribute must return a convertible dictionary if present.
- Result inherits from NPY_VOID.
- ::
- int
- PyArray_DescrAlignConverter2(PyObject *obj, PyArray_Descr **at)
- Get type-descriptor from an object forcing alignment if possible
- None goes to NULL.
- ::
- int
- PyArray_SearchsideConverter(PyObject *obj, void *addr)
- Convert object to searchsorted side
- ::
- PyObject *
- PyArray_CheckAxis(PyArrayObject *arr, int *axis, int flags)
- PyArray_CheckAxis
- check that axis is valid
- convert 0-d arrays to 1-d arrays
- ::
- npy_intp
- PyArray_OverflowMultiplyList(npy_intp *l1, int n)
- Multiply a List of Non-negative numbers with over-flow detection.
- ::
- int
- PyArray_CompareString(char *s1, char *s2, size_t len)
- ::
- PyObject *
- PyArray_MultiIterFromObjects(PyObject **mps, int n, int nadd, ... )
- Get MultiIterator from array of Python objects and any additional
- PyObject **mps -- array of PyObjects
- int n - number of PyObjects in the array
- int nadd - number of additional arrays to include in the iterator.
- Returns a multi-iterator object.
- ::
- int
- PyArray_GetEndianness(void )
- ::
- unsigned int
- PyArray_GetNDArrayCFeatureVersion(void )
- Returns the built-in (at compilation time) C API version
- ::
- PyObject *
- PyArray_Correlate2(PyObject *op1, PyObject *op2, int mode)
- correlate(a1,a2,mode)
- This function computes the usual correlation (correlate(a1, a2) !=
- correlate(a2, a1), and conjugate the second argument for complex inputs
- ::
- PyObject*
- PyArray_NeighborhoodIterNew(PyArrayIterObject *x, npy_intp
- *bounds, int mode, PyArrayObject*fill)
- A Neighborhood Iterator object.
- ::
- void
- PyArray_SetDatetimeParseFunction(PyObject *op)
- This function is scheduled to be removed
- TO BE REMOVED - NOT USED INTERNALLY.
- ::
- void
- PyArray_DatetimeToDatetimeStruct(npy_datetime val, NPY_DATETIMEUNIT
- fr, npy_datetimestruct *result)
- Fill the datetime struct from the value and resolution unit.
- TO BE REMOVED - NOT USED INTERNALLY.
- ::
- void
- PyArray_TimedeltaToTimedeltaStruct(npy_timedelta val, NPY_DATETIMEUNIT
- fr, npy_timedeltastruct *result)
- Fill the timedelta struct from the timedelta value and resolution unit.
- TO BE REMOVED - NOT USED INTERNALLY.
- ::
- npy_datetime
- PyArray_DatetimeStructToDatetime(NPY_DATETIMEUNIT
- fr, npy_datetimestruct *d)
- Create a datetime value from a filled datetime struct and resolution unit.
- TO BE REMOVED - NOT USED INTERNALLY.
- ::
- npy_datetime
- PyArray_TimedeltaStructToTimedelta(NPY_DATETIMEUNIT
- fr, npy_timedeltastruct *d)
- Create a timdelta value from a filled timedelta struct and resolution unit.
- TO BE REMOVED - NOT USED INTERNALLY.
- ::
- NpyIter *
- NpyIter_New(PyArrayObject *op, npy_uint32 flags, NPY_ORDER
- order, NPY_CASTING casting, PyArray_Descr*dtype)
- Allocate a new iterator for one array object.
- ::
- NpyIter *
- NpyIter_MultiNew(int nop, PyArrayObject **op_in, npy_uint32
- flags, NPY_ORDER order, NPY_CASTING
- casting, npy_uint32 *op_flags, PyArray_Descr
- **op_request_dtypes)
- Allocate a new iterator for more than one array object, using
- standard NumPy broadcasting rules and the default buffer size.
- ::
- NpyIter *
- NpyIter_AdvancedNew(int nop, PyArrayObject **op_in, npy_uint32
- flags, NPY_ORDER order, NPY_CASTING
- casting, npy_uint32 *op_flags, PyArray_Descr
- **op_request_dtypes, int oa_ndim, int
- **op_axes, npy_intp *itershape, npy_intp
- buffersize)
- Allocate a new iterator for multiple array objects, and advanced
- options for controlling the broadcasting, shape, and buffer size.
- ::
- NpyIter *
- NpyIter_Copy(NpyIter *iter)
- Makes a copy of the iterator
- ::
- int
- NpyIter_Deallocate(NpyIter *iter)
- Deallocate an iterator
- ::
- npy_bool
- NpyIter_HasDelayedBufAlloc(NpyIter *iter)
- Whether the buffer allocation is being delayed
- ::
- npy_bool
- NpyIter_HasExternalLoop(NpyIter *iter)
- Whether the iterator handles the inner loop
- ::
- int
- NpyIter_EnableExternalLoop(NpyIter *iter)
- Removes the inner loop handling (so HasExternalLoop returns true)
- ::
- npy_intp *
- NpyIter_GetInnerStrideArray(NpyIter *iter)
- Get the array of strides for the inner loop (when HasExternalLoop is true)
- This function may be safely called without holding the Python GIL.
- ::
- npy_intp *
- NpyIter_GetInnerLoopSizePtr(NpyIter *iter)
- Get a pointer to the size of the inner loop (when HasExternalLoop is true)
- This function may be safely called without holding the Python GIL.
- ::
- int
- NpyIter_Reset(NpyIter *iter, char **errmsg)
- Resets the iterator to its initial state
- If errmsg is non-NULL, it should point to a variable which will
- receive the error message, and no Python exception will be set.
- This is so that the function can be called from code not holding
- the GIL.
- ::
- int
- NpyIter_ResetBasePointers(NpyIter *iter, char **baseptrs, char
- **errmsg)
- Resets the iterator to its initial state, with new base data pointers.
- This function requires great caution.
- If errmsg is non-NULL, it should point to a variable which will
- receive the error message, and no Python exception will be set.
- This is so that the function can be called from code not holding
- the GIL.
- ::
- int
- NpyIter_ResetToIterIndexRange(NpyIter *iter, npy_intp istart, npy_intp
- iend, char **errmsg)
- Resets the iterator to a new iterator index range
- If errmsg is non-NULL, it should point to a variable which will
- receive the error message, and no Python exception will be set.
- This is so that the function can be called from code not holding
- the GIL.
- ::
- int
- NpyIter_GetNDim(NpyIter *iter)
- Gets the number of dimensions being iterated
- ::
- int
- NpyIter_GetNOp(NpyIter *iter)
- Gets the number of operands being iterated
- ::
- NpyIter_IterNextFunc *
- NpyIter_GetIterNext(NpyIter *iter, char **errmsg)
- Compute the specialized iteration function for an iterator
- If errmsg is non-NULL, it should point to a variable which will
- receive the error message, and no Python exception will be set.
- This is so that the function can be called from code not holding
- the GIL.
- ::
- npy_intp
- NpyIter_GetIterSize(NpyIter *iter)
- Gets the number of elements being iterated
- ::
- void
- NpyIter_GetIterIndexRange(NpyIter *iter, npy_intp *istart, npy_intp
- *iend)
- Gets the range of iteration indices being iterated
- ::
- npy_intp
- NpyIter_GetIterIndex(NpyIter *iter)
- Gets the current iteration index
- ::
- int
- NpyIter_GotoIterIndex(NpyIter *iter, npy_intp iterindex)
- Sets the iterator position to the specified iterindex,
- which matches the iteration order of the iterator.
- Returns NPY_SUCCEED on success, NPY_FAIL on failure.
- ::
- npy_bool
- NpyIter_HasMultiIndex(NpyIter *iter)
- Whether the iterator is tracking a multi-index
- ::
- int
- NpyIter_GetShape(NpyIter *iter, npy_intp *outshape)
- Gets the broadcast shape if a multi-index is being tracked by the iterator,
- otherwise gets the shape of the iteration as Fortran-order
- (fastest-changing index first).
- The reason Fortran-order is returned when a multi-index
- is not enabled is that this is providing a direct view into how
- the iterator traverses the n-dimensional space. The iterator organizes
- its memory from fastest index to slowest index, and when
- a multi-index is enabled, it uses a permutation to recover the original
- order.
- Returns NPY_SUCCEED or NPY_FAIL.
- ::
- NpyIter_GetMultiIndexFunc *
- NpyIter_GetGetMultiIndex(NpyIter *iter, char **errmsg)
- Compute a specialized get_multi_index function for the iterator
- If errmsg is non-NULL, it should point to a variable which will
- receive the error message, and no Python exception will be set.
- This is so that the function can be called from code not holding
- the GIL.
- ::
- int
- NpyIter_GotoMultiIndex(NpyIter *iter, npy_intp *multi_index)
- Sets the iterator to the specified multi-index, which must have the
- correct number of entries for 'ndim'. It is only valid
- when NPY_ITER_MULTI_INDEX was passed to the constructor. This operation
- fails if the multi-index is out of bounds.
- Returns NPY_SUCCEED on success, NPY_FAIL on failure.
- ::
- int
- NpyIter_RemoveMultiIndex(NpyIter *iter)
- Removes multi-index support from an iterator.
- Returns NPY_SUCCEED or NPY_FAIL.
- ::
- npy_bool
- NpyIter_HasIndex(NpyIter *iter)
- Whether the iterator is tracking an index
- ::
- npy_bool
- NpyIter_IsBuffered(NpyIter *iter)
- Whether the iterator is buffered
- ::
- npy_bool
- NpyIter_IsGrowInner(NpyIter *iter)
- Whether the inner loop can grow if buffering is unneeded
- ::
- npy_intp
- NpyIter_GetBufferSize(NpyIter *iter)
- Gets the size of the buffer, or 0 if buffering is not enabled
- ::
- npy_intp *
- NpyIter_GetIndexPtr(NpyIter *iter)
- Get a pointer to the index, if it is being tracked
- ::
- int
- NpyIter_GotoIndex(NpyIter *iter, npy_intp flat_index)
- If the iterator is tracking an index, sets the iterator
- to the specified index.
- Returns NPY_SUCCEED on success, NPY_FAIL on failure.
- ::
- char **
- NpyIter_GetDataPtrArray(NpyIter *iter)
- Get the array of data pointers (1 per object being iterated)
- This function may be safely called without holding the Python GIL.
- ::
- PyArray_Descr **
- NpyIter_GetDescrArray(NpyIter *iter)
- Get the array of data type pointers (1 per object being iterated)
- ::
- PyArrayObject **
- NpyIter_GetOperandArray(NpyIter *iter)
- Get the array of objects being iterated
- ::
- PyArrayObject *
- NpyIter_GetIterView(NpyIter *iter, npy_intp i)
- Returns a view to the i-th object with the iterator's internal axes
- ::
- void
- NpyIter_GetReadFlags(NpyIter *iter, char *outreadflags)
- Gets an array of read flags (1 per object being iterated)
- ::
- void
- NpyIter_GetWriteFlags(NpyIter *iter, char *outwriteflags)
- Gets an array of write flags (1 per object being iterated)
- ::
- void
- NpyIter_DebugPrint(NpyIter *iter)
- For debugging
- ::
- npy_bool
- NpyIter_IterationNeedsAPI(NpyIter *iter)
- Whether the iteration loop, and in particular the iternext()
- function, needs API access. If this is true, the GIL must
- be retained while iterating.
- ::
- void
- NpyIter_GetInnerFixedStrideArray(NpyIter *iter, npy_intp *out_strides)
- Get an array of strides which are fixed. Any strides which may
- change during iteration receive the value NPY_MAX_INTP. Once
- the iterator is ready to iterate, call this to get the strides
- which will always be fixed in the inner loop, then choose optimized
- inner loop functions which take advantage of those fixed strides.
- This function may be safely called without holding the Python GIL.
- ::
- int
- NpyIter_RemoveAxis(NpyIter *iter, int axis)
- Removes an axis from iteration. This requires that NPY_ITER_MULTI_INDEX
- was set for iterator creation, and does not work if buffering is
- enabled. This function also resets the iterator to its initial state.
- Returns NPY_SUCCEED or NPY_FAIL.
- ::
- npy_intp *
- NpyIter_GetAxisStrideArray(NpyIter *iter, int axis)
- Gets the array of strides for the specified axis.
- If the iterator is tracking a multi-index, gets the strides
- for the axis specified, otherwise gets the strides for
- the iteration axis as Fortran order (fastest-changing axis first).
- Returns NULL if an error occurs.
- ::
- npy_bool
- NpyIter_RequiresBuffering(NpyIter *iter)
- Whether the iteration could be done with no buffering.
- ::
- char **
- NpyIter_GetInitialDataPtrArray(NpyIter *iter)
- Get the array of data pointers (1 per object being iterated),
- directly into the arrays (never pointing to a buffer), for starting
- unbuffered iteration. This always returns the addresses for the
- iterator position as reset to iterator index 0.
- These pointers are different from the pointers accepted by
- NpyIter_ResetBasePointers, because the direction along some
- axes may have been reversed, requiring base offsets.
- This function may be safely called without holding the Python GIL.
- ::
- int
- NpyIter_CreateCompatibleStrides(NpyIter *iter, npy_intp
- itemsize, npy_intp *outstrides)
- Builds a set of strides which are the same as the strides of an
- output array created using the NPY_ITER_ALLOCATE flag, where NULL
- was passed for op_axes. This is for data packed contiguously,
- but not necessarily in C or Fortran order. This should be used
- together with NpyIter_GetShape and NpyIter_GetNDim.
- A use case for this function is to match the shape and layout of
- the iterator and tack on one or more dimensions. For example,
- in order to generate a vector per input value for a numerical gradient,
- you pass in ndim*itemsize for itemsize, then add another dimension to
- the end with size ndim and stride itemsize. To do the Hessian matrix,
- you do the same thing but add two dimensions, or take advantage of
- the symmetry and pack it into 1 dimension with a particular encoding.
- This function may only be called if the iterator is tracking a multi-index
- and if NPY_ITER_DONT_NEGATE_STRIDES was used to prevent an axis from
- being iterated in reverse order.
- If an array is created with this method, simply adding 'itemsize'
- for each iteration will traverse the new array matching the
- iterator.
- Returns NPY_SUCCEED or NPY_FAIL.
- ::
- int
- PyArray_CastingConverter(PyObject *obj, NPY_CASTING *casting)
- Convert any Python object, *obj*, to an NPY_CASTING enum.
- ::
- npy_intp
- PyArray_CountNonzero(PyArrayObject *self)
- Counts the number of non-zero elements in the array.
- Returns -1 on error.
- ::
- PyArray_Descr *
- PyArray_PromoteTypes(PyArray_Descr *type1, PyArray_Descr *type2)
- Produces the smallest size and lowest kind type to which both
- input types can be cast.
- ::
- PyArray_Descr *
- PyArray_MinScalarType(PyArrayObject *arr)
- If arr is a scalar (has 0 dimensions) with a built-in number data type,
- finds the smallest type size/kind which can still represent its data.
- Otherwise, returns the array's data type.
- ::
- PyArray_Descr *
- PyArray_ResultType(npy_intp narrs, PyArrayObject **arr, npy_intp
- ndtypes, PyArray_Descr **dtypes)
- Produces the result type of a bunch of inputs, using the UFunc
- type promotion rules. Use this function when you have a set of
- input arrays, and need to determine an output array dtype.
- If all the inputs are scalars (have 0 dimensions) or the maximum "kind"
- of the scalars is greater than the maximum "kind" of the arrays, does
- a regular type promotion.
- Otherwise, does a type promotion on the MinScalarType
- of all the inputs. Data types passed directly are treated as array
- types.
- ::
- npy_bool
- PyArray_CanCastArrayTo(PyArrayObject *arr, PyArray_Descr
- *to, NPY_CASTING casting)
- Returns 1 if the array object may be cast to the given data type using
- the casting rule, 0 otherwise. This differs from PyArray_CanCastTo in
- that it handles scalar arrays (0 dimensions) specially, by checking
- their value.
- ::
- npy_bool
- PyArray_CanCastTypeTo(PyArray_Descr *from, PyArray_Descr
- *to, NPY_CASTING casting)
- Returns true if data of type 'from' may be cast to data of type
- 'to' according to the rule 'casting'.
- ::
- PyArrayObject *
- PyArray_EinsteinSum(char *subscripts, npy_intp nop, PyArrayObject
- **op_in, PyArray_Descr *dtype, NPY_ORDER
- order, NPY_CASTING casting, PyArrayObject *out)
- This function provides summation of array elements according to
- the Einstein summation convention. For example:
- - trace(a) -> einsum("ii", a)
- - transpose(a) -> einsum("ji", a)
- - multiply(a,b) -> einsum(",", a, b)
- - inner(a,b) -> einsum("i,i", a, b)
- - outer(a,b) -> einsum("i,j", a, b)
- - matvec(a,b) -> einsum("ij,j", a, b)
- - matmat(a,b) -> einsum("ij,jk", a, b)
- subscripts: The string of subscripts for einstein summation.
- nop: The number of operands
- op_in: The array of operands
- dtype: Either NULL, or the data type to force the calculation as.
- order: The order for the calculation/the output axes.
- casting: What kind of casts should be permitted.
- out: Either NULL, or an array into which the output should be placed.
- By default, the labels get placed in alphabetical order
- at the end of the output. So, if c = einsum("i,j", a, b)
- then c[i,j] == a[i]*b[j], but if c = einsum("j,i", a, b)
- then c[i,j] = a[j]*b[i].
- Alternatively, you can control the output order or prevent
- an axis from being summed/force an axis to be summed by providing
- indices for the output. This allows us to turn 'trace' into
- 'diag', for example.
- - diag(a) -> einsum("ii->i", a)
- - sum(a, axis=0) -> einsum("i...->", a)
- Subscripts at the beginning and end may be specified by
- putting an ellipsis "..." in the middle. For example,
- the function einsum("i...i", a) takes the diagonal of
- the first and last dimensions of the operand, and
- einsum("ij...,jk...->ik...") takes the matrix product using
- the first two indices of each operand instead of the last two.
- When there is only one operand, no axes being summed, and
- no output parameter, this function returns a view
- into the operand instead of making a copy.
- ::
- PyObject *
- PyArray_NewLikeArray(PyArrayObject *prototype, NPY_ORDER
- order, PyArray_Descr *dtype, int subok)
- Creates a new array with the same shape as the provided one,
- with possible memory layout order and data type changes.
- prototype - The array the new one should be like.
- order - NPY_CORDER - C-contiguous result.
- NPY_FORTRANORDER - Fortran-contiguous result.
- NPY_ANYORDER - Fortran if prototype is Fortran, C otherwise.
- NPY_KEEPORDER - Keeps the axis ordering of prototype.
- dtype - If not NULL, overrides the data type of the result.
- subok - If 1, use the prototype's array subtype, otherwise
- always create a base-class array.
- NOTE: If dtype is not NULL, steals the dtype reference.
- ::
- int
- PyArray_GetArrayParamsFromObject(PyObject *op, PyArray_Descr
- *requested_dtype, npy_bool
- writeable, PyArray_Descr
- **out_dtype, int *out_ndim, npy_intp
- *out_dims, PyArrayObject
- **out_arr, PyObject *context)
- Retrieves the array parameters for viewing/converting an arbitrary
- PyObject* to a NumPy array. This allows the "innate type and shape"
- of Python list-of-lists to be discovered without
- actually converting to an array.
- In some cases, such as structured arrays and the __array__ interface,
- a data type needs to be used to make sense of the object. When
- this is needed, provide a Descr for 'requested_dtype', otherwise
- provide NULL. This reference is not stolen. Also, if the requested
- dtype doesn't modify the interpretation of the input, out_dtype will
- still get the "innate" dtype of the object, not the dtype passed
- in 'requested_dtype'.
- If writing to the value in 'op' is desired, set the boolean
- 'writeable' to 1. This raises an error when 'op' is a scalar, list
- of lists, or other non-writeable 'op'.
- Result: When success (0 return value) is returned, either out_arr
- is filled with a non-NULL PyArrayObject and
- the rest of the parameters are untouched, or out_arr is
- filled with NULL, and the rest of the parameters are
- filled.
- Typical usage:
- PyArrayObject *arr = NULL;
- PyArray_Descr *dtype = NULL;
- int ndim = 0;
- npy_intp dims[NPY_MAXDIMS];
- if (PyArray_GetArrayParamsFromObject(op, NULL, 1, &dtype,
- &ndim, dims, &arr, NULL) < 0) {
- return NULL;
- }
- if (arr == NULL) {
- ... validate/change dtype, validate flags, ndim, etc ...
- // Could make custom strides here too
- arr = PyArray_NewFromDescr(&PyArray_Type, dtype, ndim,
- dims, NULL,
- is_f_order ? NPY_ARRAY_F_CONTIGUOUS : 0,
- NULL);
- if (arr == NULL) {
- return NULL;
- }
- if (PyArray_CopyObject(arr, op) < 0) {
- Py_DECREF(arr);
- return NULL;
- }
- }
- else {
- ... in this case the other parameters weren't filled, just
- validate and possibly copy arr itself ...
- }
- ... use arr ...
- ::
- int
- PyArray_ConvertClipmodeSequence(PyObject *object, NPY_CLIPMODE
- *modes, int n)
- Convert an object to an array of n NPY_CLIPMODE values.
- This is intended to be used in functions where a different mode
- could be applied to each axis, like in ravel_multi_index.
- ::
- PyObject *
- PyArray_MatrixProduct2(PyObject *op1, PyObject
- *op2, PyArrayObject*out)
- Numeric.matrixproduct2(a,v,out)
- just like inner product but does the swapaxes stuff on the fly
- ::
- npy_bool
- NpyIter_IsFirstVisit(NpyIter *iter, int iop)
- Checks to see whether this is the first time the elements
- of the specified reduction operand which the iterator points at are
- being seen for the first time. The function returns
- a reasonable answer for reduction operands and when buffering is
- disabled. The answer may be incorrect for buffered non-reduction
- operands.
- This function is intended to be used in EXTERNAL_LOOP mode only,
- and will produce some wrong answers when that mode is not enabled.
- If this function returns true, the caller should also
- check the inner loop stride of the operand, because if
- that stride is 0, then only the first element of the innermost
- external loop is being visited for the first time.
- WARNING: For performance reasons, 'iop' is not bounds-checked,
- it is not confirmed that 'iop' is actually a reduction
- operand, and it is not confirmed that EXTERNAL_LOOP
- mode is enabled. These checks are the responsibility of
- the caller, and should be done outside of any inner loops.
- ::
- int
- PyArray_SetBaseObject(PyArrayObject *arr, PyObject *obj)
- Sets the 'base' attribute of the array. This steals a reference
- to 'obj'.
- Returns 0 on success, -1 on failure.
- ::
- void
- PyArray_CreateSortedStridePerm(int ndim, npy_intp
- *strides, npy_stride_sort_item
- *out_strideperm)
- This function populates the first ndim elements
- of strideperm with sorted descending by their absolute values.
- For example, the stride array (4, -2, 12) becomes
- [(2, 12), (0, 4), (1, -2)].
- ::
- void
- PyArray_RemoveAxesInPlace(PyArrayObject *arr, npy_bool *flags)
- Removes the axes flagged as True from the array,
- modifying it in place. If an axis flagged for removal
- has a shape entry bigger than one, this effectively selects
- index zero for that axis.
- WARNING: If an axis flagged for removal has a shape equal to zero,
- the array will point to invalid memory. The caller must
- validate this!
- If an axis flagged for removal has a shape larger then one,
- the aligned flag (and in the future the contiguous flags),
- may need explicite update.
- (check also NPY_RELAXED_STRIDES_CHECKING)
- For example, this can be used to remove the reduction axes
- from a reduction result once its computation is complete.
- ::
- void
- PyArray_DebugPrint(PyArrayObject *obj)
- Prints the raw data of the ndarray in a form useful for debugging
- low-level C issues.
- ::
- int
- PyArray_FailUnlessWriteable(PyArrayObject *obj, const char *name)
- This function does nothing if obj is writeable, and raises an exception
- (and returns -1) if obj is not writeable. It may also do other
- house-keeping, such as issuing warnings on arrays which are transitioning
- to become views. Always call this function at some point before writing to
- an array.
- 'name' is a name for the array, used to give better error
- messages. Something like "assignment destination", "output array", or even
- just "array".
- ::
- int
- PyArray_SetUpdateIfCopyBase(PyArrayObject *arr, PyArrayObject *base)
- Precondition: 'arr' is a copy of 'base' (though possibly with different
- strides, ordering, etc.). This function sets the UPDATEIFCOPY flag and the
- ->base pointer on 'arr', so that when 'arr' is destructed, it will copy any
- changes back to 'base'.
- Steals a reference to 'base'.
- Returns 0 on success, -1 on failure.
- ::
- void *
- PyDataMem_NEW(size_t size)
- Allocates memory for array data.
- ::
- void
- PyDataMem_FREE(void *ptr)
- Free memory for array data.
- ::
- void *
- PyDataMem_RENEW(void *ptr, size_t size)
- Reallocate/resize memory for array data.
- ::
- PyDataMem_EventHookFunc *
- PyDataMem_SetEventHook(PyDataMem_EventHookFunc *newhook, void
- *user_data, void **old_data)
- Sets the allocation event hook for numpy array data.
- Takes a PyDataMem_EventHookFunc *, which has the signature:
- void hook(void *old, void *new, size_t size, void *user_data).
- Also takes a void *user_data, and void **old_data.
- Returns a pointer to the previous hook or NULL. If old_data is
- non-NULL, the previous user_data pointer will be copied to it.
- If not NULL, hook will be called at the end of each PyDataMem_NEW/FREE/RENEW:
- result = PyDataMem_NEW(size) -> (*hook)(NULL, result, size, user_data)
- PyDataMem_FREE(ptr) -> (*hook)(ptr, NULL, 0, user_data)
- result = PyDataMem_RENEW(ptr, size) -> (*hook)(ptr, result, size, user_data)
- When the hook is called, the GIL will be held by the calling
- thread. The hook should be written to be reentrant, if it performs
- operations that might cause new allocation events (such as the
- creation/descruction numpy objects, or creating/destroying Python
- objects which might cause a gc)
- ::
- void
- PyArray_MapIterSwapAxes(PyArrayMapIterObject *mit, PyArrayObject
- **ret, int getmap)
- ::
- PyObject *
- PyArray_MapIterArray(PyArrayObject *a, PyObject *index)
- Use advanced indexing to iterate an array. Please note
- that most of this public API is currently not guaranteed
- to stay the same between versions. If you plan on using
- it, please consider adding more utility functions here
- to accommodate new features.
- ::
- void
- PyArray_MapIterNext(PyArrayMapIterObject *mit)
- This function needs to update the state of the map iterator
- and point mit->dataptr to the memory-location of the next object
- Note that this function never handles an extra operand but provides
- compatibility for an old (exposed) API.
- ::
- int
- PyArray_Partition(PyArrayObject *op, PyArrayObject *ktharray, int
- axis, NPY_SELECTKIND which)
- Partition an array in-place
- ::
- PyObject *
- PyArray_ArgPartition(PyArrayObject *op, PyArrayObject *ktharray, int
- axis, NPY_SELECTKIND which)
- ArgPartition an array
- ::
- int
- PyArray_SelectkindConverter(PyObject *obj, NPY_SELECTKIND *selectkind)
- Convert object to select kind
- ::
- void *
- PyDataMem_NEW_ZEROED(size_t size, size_t elsize)
- Allocates zeroed memory for array data.
- ::
- int
- PyArray_CheckAnyScalarExact(PyObject *obj)
- return true an object is exactly a numpy scalar
|