Expand description
A read-only array view.
An array view represents an array or a part of it, created from an iterator, subview or slice of an array.
The ArrayView<'a, A, D>
is parameterized by 'a
for the scope of the
borrow, A
for the element type and D
for the dimensionality.
Array views have all the methods of an array (see ArrayBase
).
See also ArrayViewMut
.
Implementations§
source§impl<'a, A, D> ArrayView<'a, A, D>where
D: Dimension,
impl<'a, A, D> ArrayView<'a, A, D>where
D: Dimension,
Methods for read-only array views.
sourcepub fn from_shape<Sh>(shape: Sh, xs: &'a [A]) -> Result<Self, ShapeError>where
Sh: Into<StrideShape<D>>,
pub fn from_shape<Sh>(shape: Sh, xs: &'a [A]) -> Result<Self, ShapeError>where
Sh: Into<StrideShape<D>>,
Create a read-only array view borrowing its data from a slice.
Checks whether shape
are compatible with the slice’s
length, returning an Err
if not compatible.
use ndarray::ArrayView;
use ndarray::arr3;
use ndarray::ShapeBuilder;
let s = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
let a = ArrayView::from_shape((2, 3, 2).strides((1, 4, 2)),
&s).unwrap();
assert!(
a == arr3(&[[[0, 2],
[4, 6],
[8, 10]],
[[1, 3],
[5, 7],
[9, 11]]])
);
assert!(a.strides() == &[1, 4, 2]);
sourcepub unsafe fn from_shape_ptr<Sh>(shape: Sh, ptr: *const A) -> Selfwhere
Sh: Into<StrideShape<D>>,
pub unsafe fn from_shape_ptr<Sh>(shape: Sh, ptr: *const A) -> Selfwhere
Sh: Into<StrideShape<D>>,
Create an ArrayView<A, D>
from shape information and a raw pointer to
the elements.
Unsafe because caller is responsible for ensuring all of the following:
-
The elements seen by moving
ptr
according to the shape and strides must live at least as long as'a
and must not be not mutably aliased for the duration of'a
. -
ptr
must be non-null and aligned, and it must be safe to.offset()
ptr
by zero. -
It must be safe to
.offset()
the pointer repeatedly along all axes and calculate thecount
s for the.offset()
calls without overflow, even if the array is empty or the elements are zero-sized.In other words,
-
All possible pointers generated by moving along all axes must be in bounds or one byte past the end of a single allocation with element type
A
. The only exceptions are if the array is empty or the element type is zero-sized. In these cases,ptr
may be dangling, but it must still be safe to.offset()
the pointer along the axes. -
The offset in units of bytes between the least address and greatest address by moving along all axes must not exceed
isize::MAX
. This constraint prevents the computed offset, in bytes, from overflowingisize
regardless of the starting point due to past offsets. -
The offset in units of
A
between the least address and greatest address by moving along all axes must not exceedisize::MAX
. This constraint prevents overflow when calculating thecount
parameter to.offset()
regardless of the starting point due to past offsets.
-
-
The product of non-zero axis lengths must not exceed
isize::MAX
.
sourcepub fn reborrow<'b>(self) -> ArrayView<'b, A, D>where
'a: 'b,
pub fn reborrow<'b>(self) -> ArrayView<'b, A, D>where
'a: 'b,
Convert the view into an ArrayView<'b, A, D>
where 'b
is a lifetime
outlived by 'a'
.
sourcepub fn split_at(self, axis: Axis, index: Ix) -> (Self, Self)
pub fn split_at(self, axis: Axis, index: Ix) -> (Self, Self)
Split the array view along axis
and return one view strictly before the
split and one view after the split.
Panics if axis
or index
is out of bounds.
Below, an illustration of .split_at(Axis(2), 2)
on
an array with shape 3 × 5 × 5.
sourcepub fn into_slice(&self) -> Option<&'a [A]>
pub fn into_slice(&self) -> Option<&'a [A]>
Return the array’s data as a slice, if it is contiguous and in standard order.
Return None
otherwise.
Trait Implementations§
source§impl<'a, A, S, D> From<&'a ArrayBase<S, D>> for ArrayView<'a, A, D>where
S: Data<Elem = A>,
D: Dimension,
impl<'a, A, S, D> From<&'a ArrayBase<S, D>> for ArrayView<'a, A, D>where
S: Data<Elem = A>,
D: Dimension,
Implementation of ArrayView::from(&A)
where A
is an array.
Create a read-only array view of the array.
source§impl<'a, A, Slice> From<&'a Slice> for ArrayView<'a, A, Ix1>where
Slice: AsRef<[A]> + ?Sized,
impl<'a, A, Slice> From<&'a Slice> for ArrayView<'a, A, Ix1>where
Slice: AsRef<[A]> + ?Sized,
Implementation of ArrayView::from(&S)
where S
is a slice or slicable.
Create a one-dimensional read-only array view of the data in slice
.
Panics if the slice length is greater than isize::MAX
.
source§impl<'a, 'b, I, A, D> IndexLonger<I> for &'b ArrayView<'a, A, D>where
I: NdIndex<D>,
D: Dimension,
impl<'a, 'b, I, A, D> IndexLonger<I> for &'b ArrayView<'a, A, D>where
I: NdIndex<D>,
D: Dimension,
source§fn index(self, index: I) -> &'a A
fn index(self, index: I) -> &'a A
Get a reference of a element through the view.
This method is like Index::index
but with a longer lifetime (matching
the array view); which we can only do for the array view and not in the
Index
trait.
See also the get
method which works for all arrays and array
views.
Panics if index is out of bounds.
source§unsafe fn uget(self, index: I) -> &'a A
unsafe fn uget(self, index: I) -> &'a A
Get a reference of a element through the view without boundary check
This method is like elem
with a longer lifetime (matching the array
view); which we can’t do for general arrays.
See also the uget
method which works for all arrays and array
views.
Note: only unchecked for non-debug builds of ndarray.