@@ -503,7 +503,7 @@ void ndarray_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t ki
503
503
ndarray_obj_t * self = MP_OBJ_TO_PTR (self_in );
504
504
uint8_t * array = (uint8_t * )self -> array ;
505
505
mp_print_str (print , "array(" );
506
- if (self -> ndim == 0 ) {
506
+ if (self -> len == 0 ) {
507
507
mp_print_str (print , "[]" );
508
508
}
509
509
#if ULAB_MAX_DIMS > 3
@@ -1759,13 +1759,11 @@ mp_obj_t ndarray_binary_op(mp_binary_op_t _op, mp_obj_t lobj, mp_obj_t robj) {
1759
1759
#if NDARRAY_HAS_UNARY_OPS
1760
1760
mp_obj_t ndarray_unary_op (mp_unary_op_t op , mp_obj_t self_in ) {
1761
1761
ndarray_obj_t * self = MP_OBJ_TO_PTR (self_in );
1762
- uint8_t itemsize = mp_binary_get_size ('@' , self -> dtype , NULL );
1763
1762
ndarray_obj_t * ndarray = NULL ;
1764
1763
1765
1764
switch (op ) {
1766
1765
#if NDARRAY_HAS_UNARY_OP_ABS
1767
1766
case MP_UNARY_OP_ABS :
1768
- (void )itemsize ;
1769
1767
ndarray = ndarray_copy_view (self );
1770
1768
// if Booleam, NDARRAY_UINT8, or NDARRAY_UINT16, there is nothing to do
1771
1769
if (self -> dtype == NDARRAY_INT8 ) {
@@ -1798,18 +1796,15 @@ mp_obj_t ndarray_unary_op(mp_unary_op_t op, mp_obj_t self_in) {
1798
1796
if (ndarray -> boolean ) {
1799
1797
for (size_t i = 0 ; i < ndarray -> len ; i ++ , array ++ ) * array = * array ^ 0x01 ;
1800
1798
} else {
1799
+ uint8_t itemsize = mp_binary_get_size ('@' , self -> dtype , NULL );
1801
1800
for (size_t i = 0 ; i < ndarray -> len * itemsize ; i ++ , array ++ ) * array ^= 0xFF ;
1802
1801
}
1803
1802
return MP_OBJ_FROM_PTR (ndarray );
1804
1803
break ;
1805
1804
#endif
1806
1805
#if NDARRAY_HAS_UNARY_OP_LEN
1807
1806
case MP_UNARY_OP_LEN :
1808
- if (self -> ndim > 1 ) {
1809
- return mp_obj_new_int (self -> ndim );
1810
- } else {
1811
- return mp_obj_new_int (self -> len );
1812
- }
1807
+ return mp_obj_new_int (self -> shape [ULAB_MAX_DIMS - self -> ndim ]);
1813
1808
break ;
1814
1809
#endif
1815
1810
#if NDARRAY_HAS_UNARY_OP_NEGATIVE
0 commit comments