Skip to content

Commit 751c25e

Browse files
committed
DOC: Update doc comment for try_append_array
1 parent 61b0466 commit 751c25e

File tree

1 file changed

+30
-9
lines changed

1 file changed

+30
-9
lines changed

src/impl_owned_array.rs

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -208,29 +208,50 @@ impl<A> Array<A, Ix2> {
208208
impl<A, D> Array<A, D>
209209
where D: Dimension
210210
{
211-
/// Append a row to an array with row major memory layout.
211+
/// Append an array to the array
212+
///
213+
/// The axis-to-append-to `axis` must be the array's "growing axis" for this operation
214+
/// to succeed. The growing axis is the outermost or last-visited when elements are visited in
215+
/// memory order:
216+
///
217+
/// `axis` must be the growing axis of the current array, an axis with length 0 or 1.
218+
///
219+
/// - This is the 0th axis for standard layout arrays
220+
/// - This is the *n*-1 th axis for fortran layout arrays
221+
/// - If the array is empty (the axis or any other has length 0) or if `axis`
222+
/// has length 1, then the array can always be appended.
212223
///
213224
/// ***Errors*** with a layout error if the array is not in standard order or
214225
/// if it has holes, even exterior holes (from slicing). <br>
215226
/// ***Errors*** with shape error if the length of the input row does not match
216227
/// the length of the rows in the array. <br>
217228
///
218-
/// The memory layout matters, since it determines in which direction the array can easily
219-
/// grow. Notice that an empty array is compatible both ways. The amortized average
220-
/// complexity of the append is O(m) where *m* is the length of the row.
229+
/// The memory layout of the `self` array matters, since it determines in which direction the
230+
/// array can easily grow. Notice that an empty array is compatible both ways. The amortized
231+
/// average complexity of the append is O(m) where *m* is the number of elements in the
232+
/// array-to-append (equivalent to how `Vec::extend` works).
233+
///
234+
/// The memory layout of the argument `array` does not matter.
221235
///
222236
/// ```rust
223-
/// use ndarray::{Array, ArrayView, array};
237+
/// use ndarray::{Array, ArrayView, array, Axis};
224238
///
225239
/// // create an empty array and append
226240
/// let mut a = Array::zeros((0, 4));
227-
/// a.try_append_row(ArrayView::from(&[1., 2., 3., 4.])).unwrap();
228-
/// a.try_append_row(ArrayView::from(&[0., -2., -3., -4.])).unwrap();
241+
/// let ones = ArrayView::from(&[1.; 8]).into_shape((2, 4)).unwrap();
242+
/// let zeros = ArrayView::from(&[0.; 8]).into_shape((2, 4)).unwrap();
243+
/// a.try_append_array(Axis(0), ones).unwrap();
244+
/// a.try_append_array(Axis(0), zeros).unwrap();
245+
/// a.try_append_array(Axis(0), ones).unwrap();
229246
///
230247
/// assert_eq!(
231248
/// a,
232-
/// array![[1., 2., 3., 4.],
233-
/// [0., -2., -3., -4.]]);
249+
/// array![[1., 1., 1., 1.],
250+
/// [1., 1., 1., 1.],
251+
/// [0., 0., 0., 0.],
252+
/// [0., 0., 0., 0.],
253+
/// [1., 1., 1., 1.],
254+
/// [1., 1., 1., 1.]]);
234255
/// ```
235256
pub fn try_append_array(&mut self, axis: Axis, array: ArrayView<A, D>)
236257
-> Result<(), ShapeError>

0 commit comments

Comments
 (0)