def test_reductions(): arr = YTArray([[1, 2, 3], [4, 5, 6]], 'cm') ev_result = arr.dot(YTArray([1, 2, 3], 'cm')) res = YTArray([14., 32.], 'cm**2') assert_equal(ev_result, res) assert_equal(ev_result.units, res.units) assert_isinstance(ev_result, YTArray) answers = { 'prod': (YTQuantity(720, 'cm**6'), YTArray([4, 10, 18], 'cm**2'), YTArray([6, 120], 'cm**3')), 'sum': ( YTQuantity(21, 'cm'), YTArray([5., 7., 9.], 'cm'), YTArray([6, 15], 'cm'), ), 'mean': (YTQuantity(3.5, 'cm'), YTArray([2.5, 3.5, 4.5], 'cm'), YTArray([2, 5], 'cm')), 'std': (YTQuantity(1.707825127659933, 'cm'), YTArray([1.5, 1.5, 1.5], 'cm'), YTArray([0.81649658, 0.81649658], 'cm')), } for op, (result1, result2, result3) in answers.items(): ev_result = getattr(arr, op)() assert_almost_equal(ev_result, result1) assert_almost_equal(ev_result.units, result1.units) assert_isinstance(ev_result, YTQuantity) for axis, result in [(0, result2), (1, result3), (-1, result3)]: ev_result = getattr(arr, op)(axis=axis) assert_almost_equal(ev_result, result) assert_almost_equal(ev_result.units, result.units) assert_isinstance(ev_result, YTArray)