test_numpy.py 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895
  1. import math
  2. import sys
  3. from typing import TYPE_CHECKING
  4. if TYPE_CHECKING:
  5. import numpy as np
  6. else:
  7. if sys.platform == 'win32':
  8. path = 'E:/pocketpy/3rd/numpy/build/Release/numpy.dll'
  9. else:
  10. path = '/mnt/e/pocketpy/3rd/numpy/build/libnumpy.so'
  11. np = __import__(path)
  12. def assert_equal(a, b):
  13. assert (a == b).all()
  14. # test dtypes
  15. assert hasattr(np, 'int8')
  16. assert hasattr(np, 'int16')
  17. assert hasattr(np, 'int32')
  18. assert hasattr(np, 'int64')
  19. assert hasattr(np, 'int_')
  20. assert hasattr(np, 'float32')
  21. assert hasattr(np, 'float64')
  22. assert hasattr(np, 'float_')
  23. assert hasattr(np, 'bool_')
  24. # test array int
  25. arr1 = np.array([])
  26. arr2 = np.array(10)
  27. arr3 = np.array([-2, -1, 0, 1, 2])
  28. arr4 = np.array([[1, 2], [2, 1]])
  29. arr5 = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
  30. arr6 = np.array([[[[[1], [10], [100], [1000], [10000]]]]])
  31. arr7 = np.array([[[2147483647]]])
  32. arr8 = np.array([1, 2, 3, 4, 5], dtype='int8')
  33. arr8 = np.array([1, 2, 3, 4, 5], np.int8)
  34. arr9 = np.array([1, 2, 3, 4, 5], dtype='int16')
  35. arr9 = np.array([1, 2, 3, 4, 5], np.int16)
  36. arr10 = np.array([1, 2, 3, 4, 5], dtype='int32')
  37. arr10 = np.array([1, 2, 3, 4, 5], np.int32)
  38. arr11 = np.array([1, 2, 3, 4, 5], dtype='int64')
  39. arr11 = np.array([1, 2, 3, 4, 5], np.int64)
  40. # test array bool
  41. arr1 = np.array([True, False, True, False])
  42. arr2 = np.array([[True, False], [False, True]])
  43. arr3 = np.array([[[True, False, True], [False, True, False]], [[True, False, True], [False, True, False]]])
  44. arr4 = np.array([[1, 0], [0, 1]], dtype='bool')
  45. arr4 = np.array([[1, 0], [0, 1]], np.bool_)
  46. # test array float
  47. arr1 = np.array([0.123456789])
  48. arr2 = np.array([-2.0, -1.0, 0.0, 1.0, 2.0])
  49. arr3 = np.array([[1.0, 2.0], [2.0, 1.0]])
  50. arr4 = np.array([[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]], [[7.0, 8.0, 9.0], [10.0, 11.0, 12.0]]])
  51. arr5 = np.array([[[[[1.0], [10.0], [100.0], [1000.0], [10000.0]]]]])
  52. arr6 = np.array([[[3.141592653589793]]])
  53. arr7 = np.array([1.0, 2.0, 3.0, 4.0, 5.0], dtype='float32')
  54. arr7 = np.array([1.0, 2.0, 3.0, 4.0, 5.0], np.float32)
  55. arr8 = np.array([1.0, 2.0, 3.0, 4.0, 5.0], dtype='float64')
  56. arr8 = np.array([1.0, 2.0, 3.0, 4.0, 5.0], np.float64)
  57. # test array creation
  58. assert_equal(np.ones([1, 1]), np.array([[1.0]]))
  59. assert_equal(np.ones([1, 1, 2, 2]), np.array([[[[1.0, 1.0], [1.0, 1.0]]]]))
  60. assert_equal(np.zeros([1, 1]), np.array([[0.0]]))
  61. assert_equal(np.zeros([1, 1, 2, 2]), np.array([[[[0.0, 0.0], [0.0, 0.0]]]]))
  62. assert_equal(np.full([1, 1], -1e9), np.array([[-1.000000e+09]]))
  63. assert_equal(np.full([1, 1, 2, 2], 3.14), np.array([[[[3.14, 3.14], [3.14, 3.14]]]]))
  64. assert_equal(np.identity(1), np.array([[1.0]]))
  65. assert_equal(np.identity(3), np.array([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]))
  66. assert_equal(np.arange(10), np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
  67. assert_equal(np.arange(1, 10), np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]))
  68. assert_equal(np.arange(1, 10, 2), np.array([1, 3, 5, 7, 9]))
  69. assert_equal(np.linspace(0, 1, 5), np.array([0.0, 0.25, 0.5, 0.75, 1.0]))
  70. assert np.allclose(np.linspace(0, 1, 5, False), np.array([0.0, 0.2, 0.4, 0.6, 0.8]))
  71. assert np.allclose(np.linspace(0, 1, 20, True),
  72. np.array([0.0, 0.05263158, 0.10526316,
  73. 0.15789474, 0.21052632, 0.26315789,
  74. 0.31578947, 0.36842105, 0.42105263,
  75. 0.47368421, 0.52631579, 0.57894737,
  76. 0.63157895, 0.68421053, 0.73684211,
  77. 0.78947368, 0.84210526, 0.89473684,
  78. 0.94736842, 1.0]))
  79. # test array properties
  80. arr1 = np.array([1, 2, 3])
  81. assert arr1.size == 3
  82. assert arr1.ndim == 1
  83. assert arr1.shape == (3,)
  84. assert arr1.dtype == 'int64'
  85. arr2 = np.array([[1, 2], [3, 4]])
  86. assert arr2.size == 4
  87. assert arr2.ndim == 2
  88. assert arr2.shape == (2, 2)
  89. assert arr2.dtype == np.int64
  90. arr3 = np.array([[1, 2, 2, 1], [3, 4, 4, 3], [5, 6, 6, 5]], np.int32)
  91. assert arr3.size == 12
  92. assert arr3.ndim == 2
  93. assert arr3.shape == (3, 4)
  94. assert arr3.dtype == 'int32'
  95. arr4 = np.array([[[[[1.5, 2.5], [3.5, 4.5], [5.5, 6.5]]]]])
  96. assert arr4.size == 6
  97. assert arr4.ndim == 5
  98. assert arr4.shape == (1, 1, 1, 3, 2)
  99. assert arr4.dtype == np.float64
  100. # test boolean functions
  101. arr1 = np.array([0.0])
  102. assert arr1.all() == False
  103. assert arr1.any() == False
  104. arr2 = np.array([1.0])
  105. assert arr2.all() == True
  106. assert arr2.any() == True
  107. arr3 = np.array([[1, 0], [0, 1]])
  108. assert arr3.all() == False
  109. assert arr3.any() == True
  110. arr4 = np.array([[[True, False, True], [False, True, False]], [[True, False, True], [False, True, False]]])
  111. assert arr4.all() == False
  112. assert arr4.any() == True
  113. # test array sum
  114. a = np.array([1.0, 2.0, 3.0])
  115. assert math.isclose(a.sum(), 6.0)
  116. arr1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
  117. assert arr1.sum() == 45
  118. assert arr1.sum(0) == 45
  119. arr2 = np.array([[1], [2], [3]])
  120. assert arr2.sum() == 6
  121. assert_equal(arr2.sum(0), np.array([6]))
  122. assert_equal(arr2.sum(1), np.array([1, 2, 3]))
  123. assert arr2.sum((0, 1)) == 6
  124. arr3 = np.array([[[[[1.5, 2.5, 3.5], [3.5, 4.5, 5.5], [5.5, 6.5, 7.5]]]]])
  125. assert arr3.sum() == 40.5
  126. assert_equal(arr3.sum(0), np.array([[[[1.5, 2.5, 3.5], [3.5, 4.5, 5.5], [5.5, 6.5, 7.5]]]]))
  127. assert_equal(arr3.sum(1), np.array([[[[1.5, 2.5, 3.5], [3.5, 4.5, 5.5], [5.5, 6.5, 7.5]]]]))
  128. assert_equal(arr3.sum(2), np.array([[[[1.5, 2.5, 3.5], [3.5, 4.5, 5.5], [5.5, 6.5, 7.5]]]]))
  129. assert_equal(arr3.sum(3), np.array([[[[10.5, 13.5, 16.5]]]]))
  130. assert_equal(arr3.sum(4), np.array([[[[7.5, 13.5, 19.5]]]]))
  131. assert_equal(arr3.sum((0, 1)), np.array([[[1.5, 2.5, 3.5], [3.5, 4.5, 5.5], [5.5, 6.5, 7.5]]]))
  132. assert_equal(arr3.sum((3, 4)), np.array([[[40.5]]]))
  133. # test array prod
  134. arr1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
  135. assert arr1.prod() == 362880
  136. assert arr1.prod(0) == 362880
  137. arr2 = np.array([[1], [2], [3]])
  138. assert arr2.prod() == 6
  139. assert_equal(arr2.prod(0), np.array([6]))
  140. assert_equal(arr2.prod(1), np.array([1, 2, 3]))
  141. assert arr2.prod((0, 1)) == 6
  142. arr3 = np.array([[[[[1.5, 2.5, 3.5], [3.5, 4.5, 5.5], [5.5, 6.5, 7.5]]]]])
  143. assert arr3.prod() == 304845.556640625
  144. assert_equal(arr3.prod(0), np.array([[[[1.5, 2.5, 3.5], [3.5, 4.5, 5.5], [5.5, 6.5, 7.5]]]]))
  145. assert_equal(arr3.prod(1), np.array([[[[1.5, 2.5, 3.5], [3.5, 4.5, 5.5], [5.5, 6.5, 7.5]]]]))
  146. assert_equal(arr3.prod(4), np.array([[[[13.125, 86.625, 268.125]]]]))
  147. assert_equal(arr3.prod((0, 3)), np.array([[[28.875, 73.125, 144.375]]]))
  148. # test array min
  149. a = np.array([1.0, 2.0, 3.0])
  150. assert math.isclose(a.min(), 1.0)
  151. arr1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
  152. assert arr1.min() == 1
  153. arr2 = np.array([[-1], [-2], [-3]])
  154. assert arr2.min() == -3
  155. arr3 = np.array([[[[[1.5, -1.5], [3.5, -3.5], [5.5, -5.5]]]]])
  156. assert arr3.min() == -5.5
  157. assert_equal(arr3.min(0), np.array([[[[1.5, -1.5], [3.5, -3.5], [5.5, -5.5]]]]))
  158. assert_equal(arr3.min(4), np.array([[[[-1.5, -3.5, -5.5]]]]))
  159. assert_equal(arr3.min((0, 3)), np.array([[[1.5, -5.5]]]))
  160. assert_equal(arr3.min((0, 4)), np.array([[[-1.5, -3.5, -5.5]]]))
  161. # test array max
  162. a = np.array([1.0, 2.0, 3.0])
  163. assert math.isclose(a.max(), 3.0)
  164. arr1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
  165. assert arr1.max() == 9
  166. arr2 = np.array([[-1], [-2], [-3]])
  167. assert arr2.max() == -1
  168. arr3 = np.array([[[[[1.5, -1.5], [3.5, -3.5], [5.5, -5.5]]]]])
  169. assert arr3.max() == 5.5
  170. assert_equal(arr3.max(0), np.array([[[[1.5, -1.5], [3.5, -3.5], [5.5, -5.5]]]]))
  171. assert_equal(arr3.max(4), np.array([[[[1.5, 3.5, 5.5]]]]))
  172. assert_equal(arr3.max((0, 3)), np.array([[[5.5, -1.5]]]))
  173. assert_equal(arr3.max((0, 4)), np.array([[[1.5, 3.5, 5.5]]]))
  174. # test array mean
  175. a = np.array([1.0, 2.0, 3.0])
  176. assert math.isclose(a.mean(), 2.0)
  177. arr = np.array([[[1.5, 2.5, 3.5], [3.5, 4.5, 5.5], [5.5, 6.5, 7.5]]])
  178. assert arr.mean() == 4.5
  179. assert_equal(arr.mean(0), np.array([[1.5, 2.5, 3.5], [3.5, 4.5, 5.5], [5.5, 6.5, 7.5]]))
  180. assert_equal(arr.mean(1), np.array([[3.5, 4.5, 5.5]]))
  181. assert_equal(arr.mean(2), np.array([[2.5, 4.5, 6.5]]))
  182. # test array std
  183. a = np.array([1.0, 2.0, 3.0])
  184. assert math.isclose(a.std(), 0.816496580927726)
  185. arr = np.array([[[1.5, 2.5, 3.5], [3.5, 4.5, 5.5], [5.5, 6.5, 7.5]]])
  186. assert arr.std() == 1.8257418583505538
  187. assert_equal(arr.std(0), np.array([[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]))
  188. assert np.allclose(arr.std(1), np.array([[1.632993, 1.632993, 1.632993]]))
  189. assert np.allclose(arr.std(2), np.array([[0.81649658, 0.81649658, 0.81649658]]))
  190. # test array var
  191. a = np.array([1.0, 2.0, 3.0])
  192. assert math.isclose(a.var(), 0.6666666666666666)
  193. arr = np.array([[[1.5, 2.5, 3.5], [3.5, 4.5, 5.5], [5.5, 6.5, 7.5]]])
  194. assert arr.var() == 3.3333333333333335
  195. assert_equal(arr.var(0), np.array([[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]))
  196. assert np.allclose(arr.var(1), np.array([[2.66666667, 2.66666667, 2.66666667]]))
  197. assert np.allclose(arr.var(2), np.array([[0.66666667, 0.66666667, 0.66666667]]))
  198. # test array argmin
  199. a = np.array([3, 1, 2])
  200. assert a.argmin() == 1
  201. arr1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
  202. assert arr1.argmin() == 0
  203. arr2 = np.array([[-1], [-2], [-3]])
  204. assert arr2.argmin() == 2
  205. assert_equal(arr2.argmin(0), np.array([2]))
  206. arr3 = np.array([[[[[1.5, -1.5], [3.5, -3.5], [5.5, -5.5]]]]])
  207. assert arr3.argmin() == 5
  208. assert_equal(arr3.argmin(0), np.array([[[[0, 0], [0, 0], [0, 0]]]]))
  209. assert_equal(arr3.argmin(1), np.array([[[[0, 0], [0, 0], [0, 0]]]]))
  210. assert_equal(arr3.argmin(2), np.array([[[[0, 0], [0, 0], [0, 0]]]]))
  211. assert_equal(arr3.argmin(3), np.array([[[[0, 2]]]]))
  212. assert_equal(arr3.argmin(4), np.array([[[[1, 1, 1]]]]))
  213. # test array argmax
  214. a = np.array([3, 1, 2])
  215. assert a.argmax() == 0
  216. arr1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
  217. assert arr1.argmax() == 8
  218. arr2 = np.array([[-1], [-2], [-3]])
  219. assert arr2.argmax() == 0
  220. assert_equal(arr2.argmax(0), np.array([0]))
  221. arr3 = np.array([[[[[1.5, -1.5], [3.5, -3.5], [5.5, -5.5]]]]])
  222. assert arr3.argmax() == 4
  223. assert_equal(arr3.argmax(0), np.array([[[[0, 0], [0, 0], [0, 0]]]]))
  224. assert_equal(arr3.argmax(1), np.array([[[[0, 0], [0, 0], [0, 0]]]]))
  225. assert_equal(arr3.argmax(2), np.array([[[[0, 0], [0, 0], [0, 0]]]]))
  226. assert_equal(arr3.argmax(3), np.array([[[[2, 0]]]]))
  227. assert_equal(arr3.argmax(4), np.array([[[[0, 0, 0]]]]))
  228. # test array argsort
  229. a = np.array([3, 1, 2])
  230. assert_equal(a.argsort(), np.array([1, 2, 0]))
  231. arr1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
  232. assert_equal(arr1.argsort(), np.array([0, 1, 2, 3, 4, 5, 6, 7, 8]))
  233. arr2 = np.array([9, 8, 7, 6, 5, 4, 3, 2, 1])
  234. assert_equal(arr2.argsort(), np.array([8, 7, 6, 5, 4, 3, 2, 1, 0]))
  235. arr3 = np.array([[-1], [-2], [-3]])
  236. assert_equal(arr3.argsort(), np.array([[0], [0], [0]]))
  237. assert_equal(arr3.argsort(0), np.array([[2], [1], [0]]))
  238. arr4 = np.array([[[[[1.5, -1.5], [3.5, -3.5], [5.5, -5.5]]]]])
  239. assert_equal(arr4.argsort(), np.array([[[[[1, 0], [1, 0], [1, 0]]]]]))
  240. assert_equal(arr4.argsort(0), np.array([[[[[0, 0], [0, 0], [0, 0]]]]]))
  241. assert_equal(arr4.argsort(1), np.array([[[[[0, 0], [0, 0], [0, 0]]]]]))
  242. assert_equal(arr4.argsort(2), np.array([[[[[0, 0], [0, 0], [0, 0]]]]]))
  243. assert_equal(arr4.argsort(3), np.array([[[[[0, 2], [1, 1], [2, 0]]]]]))
  244. assert_equal(arr4.argsort(4), np.array([[[[[1, 0], [1, 0], [1, 0]]]]]))
  245. # test array sort
  246. a = np.array([3, 1, 2])
  247. a.sort()
  248. assert_equal(a, np.array([1, 2, 3]))
  249. arr1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
  250. arr1.sort()
  251. assert_equal(arr1, np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]))
  252. arr2 = np.array([9, 8, 7, 6, 5, 4, 3, 2, 1])
  253. arr2.sort()
  254. assert_equal(arr2, np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]))
  255. arr3 = np.array([[-1], [-2], [-3]])
  256. arr3.sort(0)
  257. assert_equal(arr3, np.array([[-3], [-2], [-1]]))
  258. arr4 = np.array([[[[[1.5, -1.5], [3.5, -3.5], [5.5, -5.5]]]]])
  259. arr4.sort(3)
  260. assert_equal(arr4, np.array([[[[[1.5, -5.5], [3.5, -3.5], [5.5, -1.5]]]]]))
  261. # test array reshape
  262. a = np.array([[1, 2], [3, 4]])
  263. assert_equal(a.reshape([1, 4]), np.array([[1, 2, 3, 4]]))
  264. arr1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
  265. assert_equal(arr1.reshape([3, 3]), np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
  266. arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
  267. assert_equal(arr2.reshape([9]), np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]))
  268. arr3 = np.array([1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5])
  269. assert_equal(arr3.reshape([3, 4]), np.array([[1.5, 2.5, 3.5, 4.5], [5.5, 6.5, 7.5, 8.5], [9.5, 10.5, 11.5, 12.5]]))
  270. assert_equal(arr3.reshape([2, 3, 2]), np.array([[[1.5, 2.5], [3.5, 4.5], [5.5, 6.5]],
  271. [[7.5, 8.5], [9.5, 10.5], [11.5, 12.5]]]))
  272. assert_equal(arr3.reshape([1, 1, 2, 2, 3]), np.array([[[[[1.5, 2.5, 3.5], [4.5, 5.5, 6.5]],
  273. [[7.5, 8.5, 9.5], [10.5, 11.5, 12.5]]]]]))
  274. # test array resize
  275. a = np.array([[1, 2], [3, 4]])
  276. a.resize([1, 4])
  277. assert_equal(a, np.array([[1, 2, 3, 4]]))
  278. # test array squeeze
  279. a = np.array([[1, 2, 3, 4]])
  280. assert_equal(a.squeeze(), np.array([1, 2, 3, 4]))
  281. arr1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
  282. assert_equal(arr1.squeeze(), np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]))
  283. arr2 = np.array([[-1], [-2], [-3]])
  284. assert_equal(arr2.squeeze(), np.array([-1, -2, -3]))
  285. arr3 = np.array([[[[[1.5, -1.5], [3.5, -3.5], [5.5, -5.5]]]]])
  286. assert_equal(arr3.squeeze(), np.array([[1.5, -1.5], [3.5, -3.5], [5.5, -5.5]]))
  287. assert_equal(arr3.squeeze(0), np.array([[[[1.5, -1.5], [3.5, -3.5], [5.5, -5.5]]]]))
  288. # test array transpose
  289. a = np.array([[1, 2, 3, 4]])
  290. assert_equal(a.transpose(), np.array([[1], [2], [3], [4]]))
  291. arr1 = np.array([[1], [2], [3]])
  292. assert_equal(arr1.transpose(), np.array([[1, 2, 3]]))
  293. arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
  294. assert_equal(arr2.transpose(), np.array([[1, 4, 7], [2, 5, 8], [3, 6, 9]]))
  295. assert_equal(arr2.transpose(0, 1), np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
  296. assert_equal(arr2.transpose(1, 0), np.array([[1, 4, 7], [2, 5, 8], [3, 6, 9]]))
  297. arr3 = np.array([[[[[1.5, -5.5], [3.5, -3.5], [5.5, -1.5]]]]])
  298. assert_equal(arr3.transpose(), np.array([[[[[1.5]]], [[[3.5]]], [[[5.5]]]],
  299. [[[[-5.5]]], [[[-3.5]]], [[[-1.5]]]]]))
  300. assert_equal(arr3.transpose(0, 1, 2, 3, 4), np.array([[[[[1.5, -5.5],
  301. [3.5, -3.5],
  302. [5.5, -1.5]]]]]))
  303. assert_equal(arr3.transpose((3, 4, 0, 2, 1)), np.array([[[[[1.5]]], [[[-5.5]]]],
  304. [[[[3.5]]], [[[-3.5]]]],
  305. [[[[5.5]]], [[[-1.5]]]]]))
  306. # test array repeat
  307. a = np.array([[1, 2, 3, 4]])
  308. assert_equal(a.repeat(2), np.array([[1, 1, 2, 2, 3, 3, 4, 4]]))
  309. arr1 = np.array([[1, 2], [3, 4]])
  310. assert_equal(arr1.repeat(2, 0), np.array([[1, 2], [1, 2], [3, 4], [3, 4]]))
  311. arr2 = np.array([[[[1, 2, 3], [4, 5, 6]]]])
  312. assert_equal(arr2.repeat(4, 3), np.array([[[[1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3],
  313. [4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6]]]]))
  314. assert_equal(arr2.repeat([1, 2, 3], 3), np.array([[[[1, 2, 2, 3, 3, 3],
  315. [4, 5, 5, 6, 6, 6]]]]))
  316. # test array flatten
  317. a = np.array([[1, 2, 3, 4]])
  318. assert_equal(a.transpose().flatten(), np.array([1, 2, 3, 4]))
  319. assert_equal(a.repeat(2), np.array([[1, 1, 2, 2, 3, 3, 4, 4]]))
  320. arr1 = np.array([[1, 2], [3, 4]])
  321. assert_equal(arr1.flatten(), np.array([1, 2, 3, 4]))
  322. arr2 = np.array([[[1., 2.], [3., 4.], [5., 6.]], [[7., 8.], [9., 10.], [11., 12.]]])
  323. assert_equal(arr2.flatten(), np.array([1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.]))
  324. # test array copy
  325. a = np.array([1.1, 2.2, 3.3])
  326. assert_equal(a.copy(), a)
  327. arr1 = np.array([[1, 2], [3, 4]])
  328. arr2 = arr1
  329. arr3 = arr1.copy()
  330. arr1[0] = [10, 20]
  331. assert_equal(arr2, np.array([[10, 20], [3, 4]])) # Shallow copy
  332. assert_equal(arr3, np.array([[1, 2], [3, 4]])) # Deep copy
  333. # test array astype
  334. a = np.array([1.1, 2.2, 3.3])
  335. assert_equal(a.astype(np.int32), np.array([1, 2, 3]))
  336. arr1 = np.array([1, 2, 2.5])
  337. assert_equal(arr1.astype('int_'), np.array([1, 2, 2]))
  338. assert arr1.dtype == 'float64'
  339. assert_equal(arr1.astype('float64'), np.array([1.0, 2.0, 2.5]))
  340. assert arr1.dtype == 'float64'
  341. # test array round
  342. a = np.array([1.1, 2.2, 3.3])
  343. assert_equal(a.round(), np.array([1., 2., 3.]))
  344. assert_equal(np.round(np.array([40, 20, 30, 10])), np.array([40, 20, 30, 10]))
  345. assert_equal(np.round(np.array([0.37, 1.64])), np.array([0.0, 2.0]))
  346. assert_equal(np.round(np.array([.5, 1.5, 2.5, 3.5, 4.5])),np.array([1., 2., 3., 4., 5.]))
  347. # test array floor
  348. assert_equal(np.floor(np.array([40, 20, 30, 10])), np.array([40, 20, 30, 10]))
  349. assert_equal(np.floor(np.array([0.37, 1.64])), np.array([0., 1.]))
  350. assert_equal(np.floor(np.array([.5, 1.5, 2.5, 3.5, 4.5])), np.array([0., 1., 2., 3., 4.]))
  351. # test array ceil
  352. assert_equal(np.ceil(np.array([40, 20, 30, 10])), np.array([40, 20, 30, 10]))
  353. assert_equal(np.ceil(np.array([0.37, 1.64])), np.array([1., 2.]))
  354. assert_equal(np.ceil(np.array([.5, 1.5, 2.5, 3.5, 4.5])), np.array([1., 2., 3., 4., 5.]))
  355. # test array abs
  356. assert_equal(np.abs(np.array([[-1.2, 1.2], [-10, 10]])), np.array([[1.2, 1.2], [10, 10]]))
  357. assert_equal(np.abs(np.linspace(0, -10)), np.linspace(0, 10))
  358. # test __repr__ __str__
  359. a = np.array([[1, 2], [3, 4]])
  360. assert repr(a) == '''
  361. array([[1, 2],
  362. [3, 4]])
  363. '''.strip()
  364. # test array add
  365. a = np.ones([2, 3])
  366. assert_equal(a + 1, np.array([[2., 2., 2.], [2., 2., 2.]]))
  367. arr1 = np.array([1, 2, 3, 4, 5])
  368. assert_equal(arr1 + 1, np.array([2, 3, 4, 5, 6]))
  369. assert_equal(arr1 + 2.5, np.array([3.5, 4.5, 5.5, 6.5, 7.5]))
  370. assert_equal(1 + arr1, np.array([2, 3, 4, 5, 6]))
  371. assert_equal(2.5 + arr1, np.array([3.5, 4.5, 5.5, 6.5, 7.5]))
  372. assert_equal(arr1 + arr1, np.array([2, 4, 6, 8, 10]))
  373. assert_equal(arr1 + np.array([-1, -2, -3, -4, -5]), np.array([0, 0, 0, 0, 0]))
  374. arr2 = np.array([[1.33, 2.66], [3.99, 5.33]])
  375. assert_equal(arr2 + 1, np.array([[2.33, 3.66], [4.99, 6.33]]))
  376. assert_equal(arr2 + 1.66, np.array([[2.99, 4.32], [5.65, 6.99]]))
  377. assert_equal(1 + arr2, np.array([[2.33, 3.66], [4.99, 6.33]]))
  378. assert_equal(1.66 + arr2, np.array([[2.99, 4.32], [5.65, 6.99]]))
  379. assert_equal(arr2 + arr2, np.array([[2.66, 5.32], [7.98, 10.66]]))
  380. array1 = np.ones([2, 2, 2, 2, 2])
  381. array2 = np.array([[[[[1.1, 1.2], [1.3, 1.4]], [[1.5, 1.6], [1.7, 1.8]]],
  382. [[[2.1, 2.2], [2.3, 2.4]], [[2.5, 2.6], [2.7, 2.8]]]],
  383. [[[[3.1, 3.2], [3.3, 3.4]], [[3.5, 3.6], [3.7, 3.8]]],
  384. [[[4.1, 4.2], [4.3, 4.4]], [[4.5, 4.6], [4.7, 4.8]]]]])
  385. assert_equal(array1 + array2, np.array([[[[[2.1, 2.2], [2.3, 2.4]],
  386. [[2.5, 2.6], [2.7, 2.8]]],
  387. [[[3.1, 3.2], [3.3, 3.4]],
  388. [[3.5, 3.6], [3.7, 3.8]]]],
  389. [[[[4.1, 4.2], [4.3, 4.4]],
  390. [[4.5, 4.6], [4.7, 4.8]]],
  391. [[[5.1, 5.2], [5.3, 5.4]],
  392. [[5.5, 5.6], [5.7, 5.8]]]]]))
  393. # test array sub
  394. a = np.ones([2, 3])
  395. assert_equal(a - 1, np.array([[0., 0., 0.], [0., 0., 0.]]))
  396. arr1 = np.array([1, 2, 3, 4, 5])
  397. assert_equal(arr1 - 1, np.array([0, 1, 2, 3, 4]))
  398. assert_equal(arr1 - 2.5, np.array([-1.5, -0.5, 0.5, 1.5, 2.5]))
  399. assert_equal(1 - arr1, np.array([0, -1, -2, -3, -4]))
  400. assert_equal(2.5 - arr1, np.array([1.5, 0.5, -0.5, -1.5, -2.5]))
  401. assert_equal(arr1 - arr1, np.array([0, 0, 0, 0, 0]))
  402. arr2 = np.array([[1.33, 2.66], [3.99, 5.33]])
  403. assert np.allclose(arr2 - 1, np.array([[0.33, 1.66], [2.99, 4.33]]))
  404. assert np.allclose(arr2 - 1.66, np.array([[-0.33, 1.], [2.33, 3.67]]))
  405. assert np.allclose(1 - arr2, np.array([[-0.33, -1.66], [-2.99, -4.33]]))
  406. assert np.allclose(1.66 - arr2, np.array([[0.33, -1.], [-2.33, -3.67]]))
  407. assert_equal(arr2 - arr2, np.array([[0, 0], [0, 0]]))
  408. array1 = np.ones([2, 2, 2, 2, 2])
  409. array2 = np.array([[[[[1.1, 1.2], [1.3, 1.4]], [[1.5, 1.6], [1.7, 1.8]]],
  410. [[[2.1, 2.2], [2.3, 2.4]], [[2.5, 2.6], [2.7, 2.8]]]],
  411. [[[[3.1, 3.2], [3.3, 3.4]], [[3.5, 3.6], [3.7, 3.8]]],
  412. [[[4.1, 4.2], [4.3, 4.4]], [[4.5, 4.6], [4.7, 4.8]]]]])
  413. assert np.allclose(array1 - array2, np.array([[[[[-0.1, -0.2], [-0.3, -0.4]],
  414. [[-0.5, -0.6], [-0.7, -0.8]]],
  415. [[[-1.1, -1.2], [-1.3, -1.4]],
  416. [[-1.5, -1.6], [-1.7, -1.8]]]],
  417. [[[[-2.1, -2.2], [-2.3, -2.4]],
  418. [[-2.5, -2.6], [-2.7, -2.8]]],
  419. [[[-3.1, -3.2], [-3.3, -3.4]],
  420. [[-3.5, -3.6], [-3.7, -3.8]]]]]))
  421. # test array mul
  422. a = np.ones([2, 3])
  423. assert_equal(a * 2, np.array([[2., 2., 2.], [2., 2., 2.]]))
  424. arr1 = np.array([1, 2, 3, 4, 5])
  425. assert_equal(arr1 * 2, np.array([2, 4, 6, 8, 10]))
  426. assert_equal(arr1 * 2.5, np.array([2.5, 5.0, 7.5, 10.0, 12.5]))
  427. assert_equal(4 * arr1, np.array([4, 8, 12, 16, 20]))
  428. assert_equal(5.0 * arr1, np.array([5.0, 10.0, 15.0, 20.0, 25.0]))
  429. assert_equal(arr1 * arr1, np.array([1, 4, 9, 16, 25]))
  430. arr2 = np.array([[1.33, 2.66], [3.99, 5.33]])
  431. assert np.allclose(arr2 * 2, np.array([[2.66, 5.32], [7.98, 10.66]]))
  432. assert np.allclose(arr2 * 2.5, np.array([[3.325, 6.65], [9.975, 13.325]]))
  433. assert np.allclose(4 * arr2, np.array([[5.32, 10.64], [15.96, 21.32]]))
  434. assert np.allclose(5.0 * arr2, np.array([[6.65, 13.3], [19.95, 26.65]]))
  435. assert np.allclose(arr2 * arr2, np.array([[1.7689, 7.0756], [15.9201, 28.4089]]))
  436. # test array div
  437. a = np.ones([2, 3])
  438. assert_equal(a / 2, np.array([[0.5, 0.5, 0.5], [0.5, 0.5, 0.5]]))
  439. arr1 = np.array([1, 2, 3, 4, 5])
  440. assert np.allclose(arr1 / 2, np.array([0.5, 1.0, 1.5, 2.0, 2.5]))
  441. assert np.allclose(arr1 / 2.5, np.array([0.4, 0.8, 1.2, 1.6, 2.0]))
  442. assert np.allclose(4 / arr1, np.array([4.0, 2.0, 1.3333333333333333, 1.0, 0.8]))
  443. assert np.allclose(5.0 / arr1, np.array([5.0, 2.5, 1.6666666666666667, 1.25, 1.0]))
  444. arr2 = np.array([[1.33, 2.66], [3.99, 5.33]])
  445. assert np.allclose(arr2 / 2, np.array([[0.665, 1.33], [1.995, 2.665]]))
  446. assert np.allclose(arr2 / 1.33, np.array([[1.0, 2.0], [3.0, 4.007519]]))
  447. assert np.allclose(4 / arr2, np.array([[3.0075188, 1.5037594], [1.00250627, 0.75046904]]))
  448. assert np.allclose(1.33 / arr2, np.array([[1.0, 0.5], [0.33333333, 0.24953096]]))
  449. assert np.allclose(arr2 / arr2, np.array([[1.0, 1.0], [1.0, 1.0]]))
  450. # test array matmul
  451. a = np.ones([2, 3])
  452. assert_equal(a @ np.ones([3, 4]), np.ones([2, 4]) * 3)
  453. arr1 = np.array([[1, 2], [3, 4]])
  454. arr2 = np.array([[5, 6], [7, 8]])
  455. assert_equal(arr1 @ arr2, np.array([[19, 22], [43, 50]]))
  456. assert_equal(arr2 @ arr1, np.array([[23, 34], [31, 46]]))
  457. arr3 = np.array([[1.0, 2.0], [2.0, 3.0], [4.0, 5.0]])
  458. arr4 = np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
  459. assert_equal(arr3 @ arr4, np.array([[9.0, 12.0, 15.0],
  460. [14.0, 19.0, 24.0],
  461. [24.0, 33.0, 42.0]]))
  462. assert_equal(arr4 @ arr3, np.array([[17.0, 23.0],
  463. [38.0, 53.0]]))
  464. # test array len
  465. arr1 = np.array([1, 2, 3, 4, 5])
  466. assert len(arr1) == 5
  467. arr2 = np.array([[1, 2], [3, 4], [5, 6]])
  468. assert len(arr2) == 3
  469. arr3 = np.array([[1, 2], [3, 4]])
  470. assert len(arr3) == 2
  471. arr4 = np.array([[[[1.5, -1.5, 2.5], [3.5, -3.5, 4.5], [5.5, -5.5, 6.5]]]])
  472. assert len(arr4) == 1
  473. # test array pow
  474. assert_equal(np.ones([2, 3]) ** 2, np.array([[1., 1., 1.], [1., 1., 1.]]))
  475. a = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
  476. b = np.array([[[2, 2], [2, 2]], [[3, 3], [3, 3]]])
  477. assert np.allclose(a ** b, np.array([[[1, 4], [9, 16]], [[125, 216], [343, 512]]]))
  478. arr1 = np.array([1, 2, 3, 4, 5])
  479. assert_equal(arr1 ** 2, np.array([1, 4, 9, 16, 25]))
  480. assert np.allclose(arr1 ** 2.5, np.array([1.0, 5.656854, 15.588457, 32.0, 55.901699]))
  481. assert_equal(2 ** arr1, np.array([2, 4, 8, 16, 32]))
  482. assert np.allclose(2.5 ** arr1, np.array([2.5, 6.25, 15.625, 39.0625, 97.65625]))
  483. arr2 = np.array([[1.33, 2.66], [3.99, 5.33]])
  484. assert np.allclose(arr2 ** 2, np.array([[1.7689, 7.0756], [15.9201, 28.4089]]))
  485. assert np.allclose(arr2 ** 2.5, np.array([[2.039995, 11.53995437], [31.80037484, 65.58703869]]))
  486. assert np.allclose(4 ** arr2, np.array([[6.32033049, 39.94657756],
  487. [252.47557235, 1618.0046067]]))
  488. assert np.allclose(5.0 ** arr2, np.array([[8.50413422, 72.32029875],
  489. [615.0215271, 5315.08388464]]))
  490. # test array binary
  491. a = np.array([[1, 0], [0, 1]], dtype=np.bool_)
  492. '''
  493. array([[ True, False],
  494. [False, True]])
  495. '''
  496. assert_equal(a & True, np.array([[1, 0], [0, 1]], dtype=np.bool_))
  497. assert_equal(a | True, np.array([[1, 1], [1, 1]], dtype=np.bool_))
  498. assert_equal(a ^ True, np.array([[0, 1], [1, 0]], dtype=np.bool_))
  499. assert_equal(~a, np.array([[False, True], [ True, False]]))
  500. # test array trigonometry
  501. arr1 = np.array([np.pi / 6, np.pi / 4, np.pi / 3, np.pi / 2, np.pi])
  502. assert np.allclose(np.sin(arr1), np.array([0.5, 0.707107, 0.866025, 1.0, 0.0]))
  503. assert np.allclose(np.cos(arr1), np.array([0.866025, 0.707107, 0.5, 0.0, -1.0]))
  504. assert np.allclose(np.tan(arr1), np.array([0.57735, 1.0, 1.73205, np.inf, 0.0]))
  505. arr2 = np.array([0.5, 0.707107, 0.866025, 1.0, 0.0])
  506. assert np.allclose(np.arcsin(arr2), np.array([np.pi / 6, np.pi / 4, np.pi / 3, np.pi / 2, 0.0]))
  507. assert np.allclose(np.arccos(arr2), np.array([np.pi / 3, np.pi / 4, np.pi / 6, 0.0, np.pi / 2]))
  508. assert np.allclose(np.arctan(arr2), np.array([0.463648, 0.61548, 0.713724, 0.785398, 0.0]))
  509. # test array exponential
  510. arr1 = np.array([0.0, 1.0, 2.0, 3.0, 4.0])
  511. assert np.allclose(np.exp(arr1), np.array([1.0, 2.718282, 7.389056, 20.085537, 54.598150]))
  512. assert np.allclose(np.log(arr1), np.array([-np.inf, 0.0, 0.693147, 1.098612, 1.386294]))
  513. assert np.allclose(np.log2(arr1), np.array([-np.inf, 0.0, 1.0, 1.584963, 2.0]))
  514. assert np.allclose(np.log10(arr1), np.array([-np.inf, 0.0, 0.30103, 0.477121, 0.60206]))
  515. # test array getitem
  516. arr1 = np.arange(30).reshape([3, 2, 5])
  517. assert_equal(arr1[0], np.array([[0, 1, 2, 3, 4],
  518. [5, 6, 7, 8, 9]]))
  519. assert_equal(arr1[1], np.array([[10, 11, 12, 13, 14],
  520. [15, 16, 17, 18, 19]]))
  521. assert_equal(arr1[2], np.array([[20, 21, 22, 23, 24],
  522. [25, 26, 27, 28, 29]]))
  523. assert_equal(arr1[-1], np.array([[20, 21, 22, 23, 24],
  524. [25, 26, 27, 28, 29]]))
  525. assert_equal(arr1[-2], np.array([[10, 11, 12, 13, 14],
  526. [15, 16, 17, 18, 19]]))
  527. assert_equal(arr1[0, 0], np.array([0, 1, 2, 3, 4]))
  528. assert_equal(arr1[1, 1], np.array([15, 16, 17, 18, 19]))
  529. assert_equal(arr1[2, 0], np.array([20, 21, 22, 23, 24]))
  530. assert_equal(arr1[(0,)], np.array([[0, 1, 2, 3, 4],
  531. [5, 6, 7, 8, 9]]))
  532. assert_equal(arr1[(0, 1)], np.array([5, 6, 7, 8, 9]))
  533. assert_equal(arr1[(1, 0)], np.array([10, 11, 12, 13, 14]))
  534. assert_equal(arr1[(-1,)], np.array([[20, 21, 22, 23, 24],
  535. [25, 26, 27, 28, 29]]))
  536. assert_equal(arr1[(-3, -1)], np.array([5, 6, 7, 8, 9]))
  537. assert arr1[(0, 1, 2)] == 7
  538. assert arr1[(2, 1, 0)] == 25
  539. assert arr1[(-3, -2, -1)] == 4
  540. assert arr1[(-1, -2, -3)] == 22
  541. assert_equal(arr1[[0, ]], np.array([[[0, 1, 2, 3, 4],
  542. [5, 6, 7, 8, 9]]]))
  543. assert_equal(arr1[[0, 1]], np.array([[[0, 1, 2, 3, 4],
  544. [5, 6, 7, 8, 9]],
  545. [[10, 11, 12, 13, 14],
  546. [15, 16, 17, 18, 19]]]))
  547. assert_equal(arr1[[1, 2]], np.array([[[10, 11, 12, 13, 14],
  548. [15, 16, 17, 18, 19]],
  549. [[20, 21, 22, 23, 24],
  550. [25, 26, 27, 28, 29]]]))
  551. assert_equal(arr1[[2, 1]], np.array([[[20, 21, 22, 23, 24],
  552. [25, 26, 27, 28, 29]],
  553. [[10, 11, 12, 13, 14],
  554. [15, 16, 17, 18, 19]]]))
  555. assert_equal(arr1[[2, 2]], np.array([[[20, 21, 22, 23, 24],
  556. [25, 26, 27, 28, 29]],
  557. [[20, 21, 22, 23, 24],
  558. [25, 26, 27, 28, 29]]]))
  559. assert_equal(arr1[[0, 1, 2]], np.array([[[0, 1, 2, 3, 4],
  560. [5, 6, 7, 8, 9]],
  561. [[10, 11, 12, 13, 14],
  562. [15, 16, 17, 18, 19]],
  563. [[20, 21, 22, 23, 24],
  564. [25, 26, 27, 28, 29]]]))
  565. assert_equal(arr1[[2, 1, 0]], np.array([[[20, 21, 22, 23, 24],
  566. [25, 26, 27, 28, 29]],
  567. [[10, 11, 12, 13, 14],
  568. [15, 16, 17, 18, 19]],
  569. [[0, 1, 2, 3, 4],
  570. [5, 6, 7, 8, 9]]]))
  571. assert_equal(arr1[0:1], np.array([[[0, 1, 2, 3, 4],
  572. [5, 6, 7, 8, 9]]]))
  573. assert_equal(arr1[2:3], np.array([[[20, 21, 22, 23, 24],
  574. [25, 26, 27, 28, 29]]]))
  575. assert_equal(arr1[0:2], np.array([[[0, 1, 2, 3, 4],
  576. [5, 6, 7, 8, 9]],
  577. [[10, 11, 12, 13, 14],
  578. [15, 16, 17, 18, 19]]]))
  579. assert_equal(arr1[1:3], np.array([[[10, 11, 12, 13, 14],
  580. [15, 16, 17, 18, 19]],
  581. [[20, 21, 22, 23, 24],
  582. [25, 26, 27, 28, 29]]]))
  583. assert_equal(arr1[1:3:3], np.array([[[10, 11, 12, 13, 14],
  584. [15, 16, 17, 18, 19]]]))
  585. assert_equal(arr1[0:3:2], np.array([[[0, 1, 2, 3, 4],
  586. [5, 6, 7, 8, 9]],
  587. [[20, 21, 22, 23, 24],
  588. [25, 26, 27, 28, 29]]]))
  589. assert_equal(arr1[1:], np.array([[[10, 11, 12, 13, 14],
  590. [15, 16, 17, 18, 19]],
  591. [[20, 21, 22, 23, 24],
  592. [25, 26, 27, 28, 29]]]))
  593. assert_equal(arr1[:2], np.array([[[0, 1, 2, 3, 4],
  594. [5, 6, 7, 8, 9]],
  595. [[10, 11, 12, 13, 14],
  596. [15, 16, 17, 18, 19]]]))
  597. assert_equal(arr1[::2], np.array([[[0, 1, 2, 3, 4],
  598. [5, 6, 7, 8, 9]],
  599. [[20, 21, 22, 23, 24],
  600. [25, 26, 27, 28, 29]]]))
  601. assert_equal(arr1[-2:3:1], np.array([[[10, 11, 12, 13, 14],
  602. [15, 16, 17, 18, 19]],
  603. [[20, 21, 22, 23, 24],
  604. [25, 26, 27, 28, 29]]]))
  605. assert_equal(arr1[3::-2], np.array([[[20, 21, 22, 23, 24],
  606. [25, 26, 27, 28, 29]],
  607. [[0, 1, 2, 3, 4],
  608. [5, 6, 7, 8, 9]]]))
  609. assert_equal(arr1[::-1], np.array([[[20, 21, 22, 23, 24],
  610. [25, 26, 27, 28, 29]],
  611. [[10, 11, 12, 13, 14],
  612. [15, 16, 17, 18, 19]],
  613. [[0, 1, 2, 3, 4],
  614. [5, 6, 7, 8, 9]]]))
  615. assert_equal(arr1[::], np.array([[[0, 1, 2, 3, 4],
  616. [5, 6, 7, 8, 9]],
  617. [[10, 11, 12, 13, 14],
  618. [15, 16, 17, 18, 19]],
  619. [[20, 21, 22, 23, 24],
  620. [25, 26, 27, 28, 29]]]))
  621. # test array setitem
  622. arr1 = np.arange(30).reshape([3, 2, 5])
  623. arr1[0] = 10
  624. assert_equal(arr1[0], np.array([[10, 10, 10, 10, 10],
  625. [10, 10, 10, 10, 10]]))
  626. arr1[1] = [1, 2, 3, 4, 5]
  627. assert_equal(arr1[1], np.array([[1, 2, 3, 4, 5],
  628. [1, 2, 3, 4, 5]]))
  629. arr1[2] = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
  630. assert_equal(arr1[2], np.array([[1, 2, 3, 4, 5],
  631. [6, 7, 8, 9, 10]]))
  632. arr1[-1] = 0
  633. assert_equal(arr1[-1], np.array([[0, 0, 0, 0, 0],
  634. [0, 0, 0, 0, 0]]))
  635. arr1[0, 0] = 5
  636. assert_equal(arr1[0, 0], np.array([5, 5, 5, 5, 5]))
  637. arr1[1, 1] = [1, 2, 3, 4, 5]
  638. assert_equal(arr1[1, 1], np.array([1, 2, 3, 4, 5]))
  639. arr1[2, 0] = [2.5]
  640. assert_equal(arr1[2, 0], np.array([2, 2, 2, 2, 2]))
  641. arr1[(0,)] = 10.5
  642. assert_equal(arr1[(0,)], np.array([[10, 10, 10, 10, 10],
  643. [10, 10, 10, 10, 10]]))
  644. arr1[(0, 1)] = 0
  645. assert_equal(arr1[(0, 1)], np.array([0, 0, 0, 0, 0]))
  646. arr1[(-3, -1)] = 1
  647. assert_equal(arr1[(-3, -1)], np.array([1, 1, 1, 1, 1]))
  648. arr1[(-1, -2, -3)] = 3.14159
  649. assert arr1[(-1, -2, -3)] == 3
  650. arr1[[0, ]] = 0
  651. assert_equal(arr1[[0, ]], np.array([[[0, 0, 0, 0, 0],
  652. [0, 0, 0, 0, 0]]]))
  653. arr1[[0, 1]] = 1
  654. assert_equal(arr1[[0, 1]], np.array([[[1, 1, 1, 1, 1],
  655. [1, 1, 1, 1, 1]],
  656. [[1, 1, 1, 1, 1],
  657. [1, 1, 1, 1, 1]]]))
  658. arr1[[2, 2]] = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
  659. assert_equal(arr1[[2, 2]], np.array([[[1, 2, 3, 4, 5],
  660. [6, 7, 8, 9, 10]],
  661. [[1, 2, 3, 4, 5],
  662. [6, 7, 8, 9, 10]]]))
  663. arr1[0:1] = 0
  664. assert_equal(arr1[0:1], np.array([[[0, 0, 0, 0, 0],
  665. [0, 0, 0, 0, 0]]]))
  666. arr1[2:3] = 1
  667. assert_equal(arr1[2:3], np.array([[[1, 1, 1, 1, 1],
  668. [1, 1, 1, 1, 1]]]))
  669. arr1[::2] = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
  670. assert_equal(arr1[::2], np.array([[[1, 2, 3, 4, 5],
  671. [6, 7, 8, 9, 10]],
  672. [[1, 2, 3, 4, 5],
  673. [6, 7, 8, 9, 10]]]))
  674. arr1[-2:3:1] = [[[1, 2, 3, 4, 5],
  675. [6, 7, 8, 9, 10]],
  676. [[11, 12, 13, 14, 15],
  677. [16, 17, 18, 19, 20]]]
  678. assert_equal(arr1[-2:3:1], np.array([[[1, 2, 3, 4, 5],
  679. [6, 7, 8, 9, 10]],
  680. [[11, 12, 13, 14, 15],
  681. [16, 17, 18, 19, 20]]]))
  682. print("ALL TESTS PASSED")