This tests that ulab and python3/numpy match on various slice assignments that preserve the length of the array. slice assignments that change the length of the array are not tested. Unlike the case of "load slice", this case of "modify slice" is not compared to the built in list type, since "modify slice" is only implemented in micropython for simple (stride=1) slices.
25 lines
881 B
Python
25 lines
881 B
Python
try:
|
|
import ulab as np
|
|
except:
|
|
import numpy as np
|
|
|
|
for num in range(1,4):
|
|
for start in range(-num, num+1):
|
|
for end in range(-num, num+1):
|
|
for stride in (-3, -2, -1, 1, 2, 3):
|
|
l = list(range(num))
|
|
a = np.array(l, dtype=np.int8)
|
|
sl = l[start:end:stride]
|
|
ll = len(sl)
|
|
try:
|
|
sa = list(a[start:end:stride])
|
|
la = len(sa)
|
|
except IndexError as e:
|
|
sa = str(e)
|
|
la = -1
|
|
print("%2d [% d:% d:% d] %-24r %-24r%s" % (
|
|
num, start, end, stride, sl, sa, " ***" if sa != sl else ""))
|
|
|
|
a[start:end:stride] = np.ones(len(sl)) * -1
|
|
print("%2d [% d:% d:% d] %r" % (
|
|
num, start, end, stride, list(a)))
|