nd_arrow_array/compute/
methods.rs1use arrow::datatypes::DataType;
4
5use crate::NdArrowArray;
6use crate::compute::{self, Selector};
7use crate::dimensions::Dimensions;
8use crate::error::Result;
9
10impl NdArrowArray {
11 pub fn broadcast_to(&self, target: &Dimensions) -> Result<Self> {
13 compute::broadcast_to(self, target)
14 }
15
16 pub fn transpose(&self, order: &[&str]) -> Result<Self> {
18 compute::transpose(self, order)
19 }
20
21 pub fn squeeze(&self, dims: Option<&[&str]>) -> Result<Self> {
23 compute::squeeze(self, dims)
24 }
25
26 pub fn expand_dims(&self, name: &str, axis: usize) -> Result<Self> {
28 compute::expand_dims(self, name, axis)
29 }
30
31 pub fn isel(&self, selections: &[(&str, Selector)]) -> Result<Self> {
33 compute::isel(self, selections)
34 }
35
36 pub fn cast(&self, to: &DataType) -> Result<Self> {
38 compute::cast(self, to)
39 }
40
41 pub fn fill_null(&self, value: &arrow::array::ArrayRef) -> Result<Self> {
43 compute::fill_null(self, value)
44 }
45
46 pub fn sum(&self, axes: Option<&[&str]>) -> Result<Self> {
48 compute::sum(self, axes)
49 }
50
51 pub fn mean(&self, axes: Option<&[&str]>) -> Result<Self> {
53 compute::mean(self, axes)
54 }
55
56 pub fn min(&self, axes: Option<&[&str]>) -> Result<Self> {
58 compute::min(self, axes)
59 }
60
61 pub fn max(&self, axes: Option<&[&str]>) -> Result<Self> {
63 compute::max(self, axes)
64 }
65
66 pub fn count(&self, axes: Option<&[&str]>) -> Result<Self> {
68 compute::count(self, axes)
69 }
70
71 pub fn std(&self, axes: Option<&[&str]>, ddof: usize) -> Result<Self> {
73 compute::std(self, axes, ddof)
74 }
75
76 pub fn var(&self, axes: Option<&[&str]>, ddof: usize) -> Result<Self> {
78 compute::var(self, axes, ddof)
79 }
80
81 pub fn median(&self, axes: Option<&[&str]>) -> Result<Self> {
83 compute::median(self, axes)
84 }
85
86 pub fn resample(
88 &self,
89 dim: &str,
90 times: &NdArrowArray,
91 freq: compute::Frequency,
92 op: compute::Reduction,
93 ) -> Result<(Self, Self)> {
94 compute::resample(self, dim, times, freq, op)
95 }
96}
97
98#[cfg(test)]
99mod tests {
100 use std::sync::Arc;
101
102 use arrow::array::{AsArray, Int32Array};
103 use arrow::datatypes::Int64Type;
104
105 use super::*;
106
107 #[test]
108 fn methods_chain() {
109 let a = NdArrowArray::try_new(
110 Arc::new(Int32Array::from_iter_values(0..6)),
111 Dimensions::try_new([("x", 2), ("y", 3)]).unwrap(),
112 )
113 .unwrap();
114 let s = a.transpose(&["y", "x"]).unwrap().sum(Some(&["x"])).unwrap();
115 assert_eq!(s.values().as_primitive::<Int64Type>().values(), &[3, 5, 7]);
116 }
117}