ArrayViewMut in ndarray - Rust

Type Alias ArrayViewMut 

Source

pub type ArrayViewMut<'a, A, D> = ArrayBase<ViewRepr<&'a mut A>, D>;
Expand description

A read-write array view.

An array view represents an array or a part of it, created from an iterator, subview or slice of an array.

The ArrayViewMut<'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 ArrayView.

pub struct ArrayViewMut<'a, A, D> { /* private fields */ }
Source§

Methods for read-write array views.

Source

Create a read-write array view borrowing its data from a slice.

Checks whether dim and strides are compatible with the slice’s length, returning an Err if not compatible.

use ndarray::ArrayViewMut;
use ndarray::arr3;
use ndarray::ShapeBuilder;

let mut s = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
let mut a = ArrayViewMut::from_shape((2, 3, 2).strides((1, 4, 2)),
                                     &mut s).unwrap();

a[[0, 0, 0]] = 1;
assert!(
    a == arr3(&[[[1, 2],
                 [4, 6],
                 [8, 10]],
                [[1, 3],
                 [5, 7],
                 [9, 11]]])
);
assert!(a.strides() == &[1, 4, 2]);
Source

Create an ArrayViewMut<A, D> from shape information and a raw pointer to the elements.

§Safety

The 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 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 the counts 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 overflowing isize 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 exceed isize::MAX. This constraint prevents overflow when calculating the count parameter to .offset() regardless of the starting point due to past offsets.

  • The product of non-zero axis lengths must not exceed isize::MAX.

  • Strides must be non-negative.

This function can use debug assertions to check some of these requirements, but it’s not a complete check.

Source

Convert the view into an ArrayViewMut<'b, A, D> where 'b is a lifetime outlived by 'a'.

Source§

Methods specific to ArrayViewMut0.

Source

Consume the mutable view and return a mutable reference to the single element in the array.

The lifetime of the returned reference matches the lifetime of the data the array view was pointing to.

use ndarray::{arr0, Array0};

let mut array: Array0<f64> = arr0(5.);
let view = array.view_mut();
let scalar = view.into_scalar();
*scalar = 7.;
assert_eq!(scalar, &7.);
assert_eq!(array[()], 7.);
Source§

Methods for read-write array views.

Source

Return the array’s data as a slice, if it is contiguous and in standard order. Return None otherwise.

Note that while this is similar to ArrayBase::as_slice_mut(), this method transfers the view’s lifetime to the slice.

Source

Return the array’s data as a slice, if it is contiguous. Return None otherwise.

Note that while this is similar to ArrayBase::as_slice_memory_order_mut(), this method transfers the view’s lifetime to the slice.

Source

Return a shared view of the array with elements as if they were embedded in cells.

The cell view itself can be copied and accessed without exclusivity.

The view acts “as if” the elements are temporarily in cells, and elements can be changed through shared references using the regular cell methods.

Source§

Methods for iterating over mutable array views.

Source

Convert into an outer iterator for this view.

Unlike ArrayRef::outer_iter, this methods preserves the lifetime of the data, not the view itself.

Source

Convert into an indexed iterator.

Unlike ArrayRef::indexed_iter, this methods preserves the lifetime of the data, not the view itself.

Source

Convert into an iterator over an axis.

Unlike ArrayRef::axis_iter, this methods preserves the lifetime of the data, not the view itself.

Source

Convert into an iterator over an axis by chunks.

Unlike ArrayRef::axis_chunks_iter, this methods preserves the lifetime of the data, not the view itself.

Source

Convert into an outer iterator for this view.

Unlike ArrayRef::outer_iter_mut, this methods preserves the lifetime of the data, not the view itself.

Source

Convert into an indexed iterator.

Unlike ArrayRef::indexed_iter_mut, this methods preserves the lifetime of the data, not the view itself.

Source

Convert into an iterator over an axis.

Unlike ArrayRef::axis_iter_mut, this methods preserves the lifetime of the data, not the view itself.

Source

Convert into an iterator over an axis by chunks.

Unlike ArrayRef::axis_chunks_iter_mut, this methods preserves the lifetime of the data, not the view itself.

Source§

Methods for read-write array views.

Source

Split the array view along axis and return one mutable view strictly before the split and one mutable view after the split.

Panics if axis or index is out of bounds.

Source

Split the view into multiple disjoint slices.

This is similar to .multi_slice_mut(), but .multi_slice_move() consumes self and produces views with lifetimes matching that of self.

See Slicing for full documentation. See also MultiSliceArg, s!, SliceArg, and SliceInfo.

Panics if any of the following occur:

  • if any of the views would intersect (i.e. if any element would appear in multiple slices)
  • if an index is out of bounds or step size is zero
  • if D is IxDyn and info does not match the number of array axes
Source§
Source

Splits the view into views of the real and imaginary components of the elements.

use ndarray::prelude::*;
use num_complex::{Complex, Complex64};

let mut arr = array![
    [Complex64::new(1., 2.), Complex64::new(3., 4.)],
    [Complex64::new(5., 6.), Complex64::new(7., 8.)],
    [Complex64::new(9., 10.), Complex64::new(11., 12.)],
];

let Complex { mut re, mut im } = arr.view_mut().split_complex();
assert_eq!(re, array![[1., 3.], [5., 7.], [9., 11.]]);
assert_eq!(im, array![[2., 4.], [6., 8.], [10., 12.]]);

re[[0, 1]] = 13.;
im[[2, 0]] = 14.;

assert_eq!(arr[[0, 1]], Complex64::new(13., 4.));
assert_eq!(arr[[2, 0]], Complex64::new(9., 14.));
Source§

Implementation of ArrayViewMut2::from(&mut [[A; N]])

Panics if the product of non-zero axis lengths overflows isize. (This can only occur if A is zero-sized or if N is zero, because slices cannot contain more than isize::MAX number of bytes.)

Source§

Create a two-dimensional read-write array view of the data in slice

Source§

Implementation of ArrayViewMut2::from(&mut [[A; N]; M])

Panics if the product of non-zero axis lengths overflows isize (This can only occur if A is zero-sized because slices cannot contain more than isize::MAX number of bytes). Panics if N == 0 and the number of rows is greater than isize::MAX.

Source§

Create a two-dimensional read-write array view of the data in slice

Source§

Implementation of ArrayViewMut::from(&mut A) where A is an array.

Source§

Create a read-write array view of the array.

Source§

Implementation of ArrayViewMut::from(&mut S) where S is a slice or sliceable.

Source§

Create a one-dimensional read-write array view of the data in slice.

Panics if the slice length is greater than isize::MAX.

Source§
Source§

Convert a mutable array view to a mutable reference of a element.

This method is like IndexMut::index_mut 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_mut method which works for all arrays and array views.

Panics if index is out of bounds.

Source§

Convert a mutable array view to a mutable reference of a element, with checked access.

See also the get_mut method which works for all arrays and array views.

Source§

Convert a mutable array view to a mutable reference of a element without boundary check.

See also the uget_mut method which works for all arrays and array views.

Note: only unchecked for non-debug builds of ndarray.

Source§

The type of the reference to the element that is produced, including its lifetime.

Source§
Source§

The type of the elements being iterated over.

Source§

Which kind of iterator are we turning this into?

Source§

Creates an iterator from a value. Read more

Source§

Available on crate feature rayon only.

Requires crate feature rayon.

Source§

The type of item that the parallel iterator will produce.

Source§

The parallel iterator type that will be created.

Source§

Converts self into a parallel iterator. Read more

Source§
Source§

The element produced per iteration.

Source§

Dimension type

Source§

Return the shape of the producer.