pub struct PyUntypedArray(/* private fields */);Expand description
A safe, untyped wrapper for NumPy’s ndarray class.
Unlike PyArray<T,D>, this type does not constrain either element type T nor the dimensionality D.
This can be useful to inspect function arguments, but it prevents operating on the elements without further downcasts.
When both element type T and index type D are known, these values can be downcast to PyArray<T, D>. In addition,
PyArray<T, D> can be dereferenced to a PyUntypedArray and can therefore automatically access its methods.
§Example
Taking PyUntypedArray can be helpful to implement polymorphic entry points:
use pyo3::exceptions::PyTypeError;
use numpy::{Element, PyUntypedArray, PyArray1, dtype};
use numpy::{PyUntypedArrayMethods, PyArrayMethods, PyArrayDescrMethods};
#[pyfunction]
fn entry_point(py: Python<'_>, array: &Bound<'_, PyUntypedArray>) -> PyResult<()> {
fn implementation<T: Element>(array: &Bound<'_, PyArray1<T>>) -> PyResult<()> {
/* .. */
Ok(())
}
let element_type = array.dtype();
if element_type.is_equiv_to(&dtype::<f32>(py)) {
let array = array.cast::<PyArray1<f32>>()?;
implementation(array)
} else if element_type.is_equiv_to(&dtype::<f64>(py)) {
let array = array.cast::<PyArray1<f64>>()?;
implementation(array)
} else {
Err(PyTypeError::new_err(format!("Unsupported element type: {}", element_type)))
}
}Trait Implementations§
Source§impl PyTypeInfo for PyUntypedArray
impl PyTypeInfo for PyUntypedArray
Source§const NAME: &'static str = "PyUntypedArray"
const NAME: &'static str = "PyUntypedArray"
prefer using ::type_object(py).name() to get the correct runtime value
Source§const MODULE: Option<&'static str>
const MODULE: Option<&'static str>
prefer using ::type_object(py).module() to get the correct runtime value
Source§fn type_object_raw<'py>(py: Python<'py>) -> *mut PyTypeObject
fn type_object_raw<'py>(py: Python<'py>) -> *mut PyTypeObject
Source§fn is_type_of(ob: &Bound<'_, PyAny>) -> bool
fn is_type_of(ob: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.impl DerefToPyAny for PyUntypedArray
Auto Trait Implementations§
impl !Freeze for PyUntypedArray
impl !RefUnwindSafe for PyUntypedArray
impl !Send for PyUntypedArray
impl !Sync for PyUntypedArray
impl Unpin for PyUntypedArray
impl UnsafeUnpin for PyUntypedArray
impl UnwindSafe for PyUntypedArray
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
Source§const NAME: &'static str = T::NAME
const NAME: &'static str = T::NAME
Use ::classinfo_object() instead and format the type name at runtime. Note that using built-in cast features is often better than manual PyTypeCheck usage.
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.