You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_array_creations.py 29 kB

4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838
  1. # Copyright 2020-2021 Huawei Technologies Co., Ltd
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. # ============================================================================
  15. """unit tests for numpy array operations"""
  16. import pytest
  17. import numpy as onp
  18. import mindspore.numpy as mnp
  19. from .utils import rand_int, rand_bool, match_array, match_res, match_meta, \
  20. match_all_arrays, run_multi_test, to_tensor
  21. class Cases():
  22. def __init__(self):
  23. self.all_shapes = [
  24. 1, 2, (1,), (2,), (1, 2, 3), [1], [2], [1, 2, 3]
  25. ]
  26. self.onp_dtypes = [onp.int32, 'int32', int,
  27. onp.float32, 'float32', float,
  28. onp.uint32, 'uint32',
  29. onp.bool_, 'bool', bool]
  30. self.mnp_dtypes = [mnp.int32, 'int32', int,
  31. mnp.float32, 'float32', float,
  32. mnp.uint32, 'uint32',
  33. mnp.bool_, 'bool', bool]
  34. self.array_sets = [1, 1.1, True, [1, 0, True], [1, 1.0, 2], (1,),
  35. [(1, 2, 3), (4, 5, 6)], onp.random.random( # pylint: disable=no-member
  36. (100, 100)).astype(onp.float32).tolist(),
  37. onp.random.random((100, 100)).astype(onp.bool).tolist()]
  38. self.arrs = [
  39. rand_int(2),
  40. rand_int(2, 3),
  41. rand_int(2, 3, 4),
  42. rand_int(2, 3, 4, 5),
  43. ]
  44. # scalars expanded across the 0th dimension
  45. self.scalars = [
  46. rand_int(),
  47. rand_int(1),
  48. rand_int(1, 1),
  49. rand_int(1, 1, 1),
  50. ]
  51. # arrays of the same size expanded across the 0th dimension
  52. self.expanded_arrs = [
  53. rand_int(2, 3),
  54. rand_int(1, 2, 3),
  55. rand_int(1, 1, 2, 3),
  56. rand_int(1, 1, 1, 2, 3),
  57. ]
  58. # arrays with dimensions of size 1
  59. self.nested_arrs = [
  60. rand_int(1),
  61. rand_int(1, 2),
  62. rand_int(3, 1, 8),
  63. rand_int(1, 3, 9, 1),
  64. ]
  65. # arrays which can be broadcast
  66. self.broadcastables = [
  67. rand_int(5),
  68. rand_int(6, 1),
  69. rand_int(7, 1, 5),
  70. rand_int(8, 1, 6, 1)
  71. ]
  72. # boolean arrays which can be broadcast
  73. self.bool_broadcastables = [
  74. rand_bool(),
  75. rand_bool(1),
  76. rand_bool(5),
  77. rand_bool(6, 1),
  78. rand_bool(7, 1, 5),
  79. rand_bool(8, 1, 6, 1),
  80. ]
  81. self.mnp_prototypes = [
  82. mnp.ones((2, 3, 4)),
  83. mnp.ones((1, 3, 1, 2, 5)),
  84. mnp.ones((2, 7, 1)),
  85. [mnp.ones(3), (1, 2, 3), mnp.ones(3), [4, 5, 6]],
  86. ([(1, 2), mnp.ones(2)], (mnp.ones(2), [3, 4])),
  87. ]
  88. self.onp_prototypes = [
  89. onp.ones((2, 3, 4)),
  90. onp.ones((1, 3, 1, 2, 5)),
  91. onp.ones((2, 7, 1)),
  92. [onp.ones(3), (1, 2, 3), onp.ones(3), [4, 5, 6]],
  93. ([(1, 2), onp.ones(2)], (onp.ones(2), [3, 4])),
  94. ]
  95. @pytest.mark.level1
  96. @pytest.mark.platform_arm_ascend_training
  97. @pytest.mark.platform_x86_ascend_training
  98. @pytest.mark.platform_x86_gpu_training
  99. @pytest.mark.platform_x86_cpu
  100. @pytest.mark.env_onecard
  101. def test_asarray():
  102. test_case = Cases()
  103. for array in test_case.array_sets:
  104. # Check for dtype matching
  105. actual = onp.asarray(array)
  106. expected = mnp.asarray(array).asnumpy()
  107. # Since we set float32/int32 as the default dtype in mindspore, we need
  108. # to make a conversion between numpy.asarray and mindspore.numpy.asarray
  109. if actual.dtype is onp.dtype('float64'):
  110. assert expected.dtype == onp.dtype('float32')
  111. elif actual.dtype is onp.dtype('int64'):
  112. assert expected.dtype == onp.dtype('int32')
  113. else:
  114. assert actual.dtype == expected.dtype
  115. match_array(actual, expected, error=7)
  116. for i in range(len(test_case.onp_dtypes)):
  117. actual = onp.asarray(array, test_case.onp_dtypes[i])
  118. expected = mnp.asarray(array, test_case.mnp_dtypes[i]).asnumpy()
  119. match_array(actual, expected, error=7)
  120. # Additional tests for nested tensor mixture
  121. mnp_input = [(mnp.ones(3,), mnp.ones(3)), [[1, 1, 1], (1, 1, 1)]]
  122. onp_input = [(onp.ones(3,), onp.ones(3)), [[1, 1, 1], (1, 1, 1)]]
  123. actual = onp.asarray(onp_input)
  124. expected = mnp.asarray(mnp_input).asnumpy()
  125. match_array(actual, expected, error=7)
  126. @pytest.mark.level1
  127. @pytest.mark.platform_arm_ascend_training
  128. @pytest.mark.platform_x86_ascend_training
  129. @pytest.mark.platform_x86_gpu_training
  130. @pytest.mark.platform_x86_cpu
  131. @pytest.mark.env_onecard
  132. def test_array():
  133. # array's function is very similar to asarray, so we mainly test the
  134. # `copy` argument.
  135. test_case = Cases()
  136. for array in test_case.array_sets:
  137. arr1 = mnp.asarray(array)
  138. arr2 = mnp.array(arr1, copy=False)
  139. arr3 = mnp.array(arr1)
  140. arr4 = mnp.asarray(array, dtype='int32')
  141. arr5 = mnp.asarray(arr4, dtype=mnp.int32)
  142. assert arr1 is arr2
  143. assert arr1 is not arr3
  144. assert arr4 is arr5
  145. # Additional tests for nested tensor/numpy_array mixture
  146. mnp_input = [(mnp.ones(3,), mnp.ones(3)), [[1, 1, 1], (1, 1, 1)]]
  147. onp_input = [(onp.ones(3,), onp.ones(3)), [[1, 1, 1], (1, 1, 1)]]
  148. actual = onp.array(onp_input)
  149. expected = mnp.array(mnp_input).asnumpy()
  150. match_array(actual, expected, error=7)
  151. @pytest.mark.level1
  152. @pytest.mark.platform_arm_ascend_training
  153. @pytest.mark.platform_x86_ascend_training
  154. @pytest.mark.platform_x86_gpu_training
  155. @pytest.mark.platform_x86_cpu
  156. @pytest.mark.env_onecard
  157. def test_asfarray():
  158. test_case = Cases()
  159. for array in test_case.array_sets:
  160. # Check for dtype matching
  161. actual = onp.asfarray(array)
  162. expected = mnp.asfarray(array).asnumpy()
  163. # Since we set float32/int32 as the default dtype in mindspore, we need
  164. # to make a conversion between numpy.asarray and mindspore.numpy.asarray
  165. if actual.dtype is onp.dtype('float64'):
  166. assert expected.dtype == onp.dtype('float32')
  167. else:
  168. assert actual.dtype == expected.dtype
  169. match_array(actual, expected, error=7)
  170. for i in range(len(test_case.onp_dtypes)):
  171. actual = onp.asfarray(array, test_case.onp_dtypes[i])
  172. expected = mnp.asfarray(array, test_case.mnp_dtypes[i]).asnumpy()
  173. match_array(actual, expected, error=7)
  174. # Additional tests for nested tensor/numpy_array mixture
  175. mnp_input = [(mnp.ones(3,), mnp.ones(3)), [[1, 1, 1], (1, 1, 1)]]
  176. onp_input = [(onp.ones(3,), onp.ones(3)), [[1, 1, 1], (1, 1, 1)]]
  177. actual = onp.asfarray(onp_input)
  178. expected = mnp.asfarray(mnp_input).asnumpy()
  179. match_array(actual, expected, error=7)
  180. @pytest.mark.level1
  181. @pytest.mark.platform_arm_ascend_training
  182. @pytest.mark.platform_x86_ascend_training
  183. @pytest.mark.platform_x86_gpu_training
  184. @pytest.mark.platform_x86_cpu
  185. @pytest.mark.env_onecard
  186. def test_zeros():
  187. test_case = Cases()
  188. for shape in test_case.all_shapes:
  189. for i in range(len(test_case.onp_dtypes)):
  190. actual = onp.zeros(shape, test_case.onp_dtypes[i])
  191. expected = mnp.zeros(shape, test_case.mnp_dtypes[i]).asnumpy()
  192. match_array(actual, expected)
  193. actual = onp.zeros(shape)
  194. expected = mnp.zeros(shape).asnumpy()
  195. match_array(actual, expected)
  196. @pytest.mark.level1
  197. @pytest.mark.platform_arm_ascend_training
  198. @pytest.mark.platform_x86_ascend_training
  199. @pytest.mark.platform_x86_gpu_training
  200. @pytest.mark.platform_x86_cpu
  201. @pytest.mark.env_onecard
  202. def test_ones():
  203. test_case = Cases()
  204. for shape in test_case.all_shapes:
  205. for i in range(len(test_case.onp_dtypes)):
  206. actual = onp.ones(shape, test_case.onp_dtypes[i])
  207. expected = mnp.ones(shape, test_case.mnp_dtypes[i]).asnumpy()
  208. match_array(actual, expected)
  209. actual = onp.ones(shape)
  210. expected = mnp.ones(shape).asnumpy()
  211. match_array(actual, expected)
  212. @pytest.mark.level1
  213. @pytest.mark.platform_arm_ascend_training
  214. @pytest.mark.platform_x86_ascend_training
  215. @pytest.mark.platform_x86_gpu_training
  216. @pytest.mark.platform_x86_cpu
  217. @pytest.mark.env_onecard
  218. def test_full():
  219. actual = onp.full((2, 2), [1, 2])
  220. expected = mnp.full((2, 2), [1, 2]).asnumpy()
  221. match_array(actual, expected)
  222. actual = onp.full((2, 3), True)
  223. expected = mnp.full((2, 3), True).asnumpy()
  224. match_array(actual, expected)
  225. actual = onp.full((3, 4, 5), 7.5)
  226. expected = mnp.full((3, 4, 5), 7.5).asnumpy()
  227. match_array(actual, expected)
  228. @pytest.mark.level1
  229. @pytest.mark.platform_arm_ascend_training
  230. @pytest.mark.platform_x86_ascend_training
  231. @pytest.mark.platform_x86_gpu_training
  232. @pytest.mark.platform_x86_cpu
  233. @pytest.mark.env_onecard
  234. def test_eye():
  235. test_case = Cases()
  236. for i in range(len(test_case.onp_dtypes)):
  237. for m in range(1, 5):
  238. actual = onp.eye(m, dtype=test_case.onp_dtypes[i])
  239. expected = mnp.eye(m, dtype=test_case.mnp_dtypes[i]).asnumpy()
  240. match_array(actual, expected)
  241. for n in range(1, 5):
  242. for k in range(0, 5):
  243. actual = onp.eye(m, n, k, dtype=test_case.onp_dtypes[i])
  244. expected = mnp.eye(
  245. m, n, k, dtype=test_case.mnp_dtypes[i]).asnumpy()
  246. match_array(actual, expected)
  247. @pytest.mark.level1
  248. @pytest.mark.platform_arm_ascend_training
  249. @pytest.mark.platform_x86_ascend_training
  250. @pytest.mark.platform_x86_gpu_training
  251. @pytest.mark.platform_x86_cpu
  252. @pytest.mark.env_onecard
  253. def test_identity():
  254. test_case = Cases()
  255. for i in range(len(test_case.onp_dtypes)):
  256. for m in range(1, 5):
  257. actual = onp.identity(m, dtype=test_case.onp_dtypes[i])
  258. expected = mnp.identity(m, dtype=test_case.mnp_dtypes[i]).asnumpy()
  259. match_array(actual, expected)
  260. @pytest.mark.level1
  261. @pytest.mark.platform_arm_ascend_training
  262. @pytest.mark.platform_x86_ascend_training
  263. @pytest.mark.platform_x86_gpu_training
  264. @pytest.mark.platform_x86_cpu
  265. @pytest.mark.env_onecard
  266. def test_arange():
  267. actual = onp.arange(10)
  268. expected = mnp.arange(10).asnumpy()
  269. match_array(actual, expected)
  270. actual = onp.arange(0, 10)
  271. expected = mnp.arange(0, 10).asnumpy()
  272. match_array(actual, expected)
  273. actual = onp.arange(start=10)
  274. expected = mnp.arange(start=10).asnumpy()
  275. match_array(actual, expected)
  276. actual = onp.arange(start=10, step=0.1)
  277. expected = mnp.arange(start=10, step=0.1).asnumpy()
  278. match_array(actual, expected, error=6)
  279. actual = onp.arange(10, step=0.1)
  280. expected = mnp.arange(10, step=0.1).asnumpy()
  281. match_array(actual, expected, error=6)
  282. actual = onp.arange(0.1, 9.9)
  283. expected = mnp.arange(0.1, 9.9).asnumpy()
  284. match_array(actual, expected, error=6)
  285. @pytest.mark.level0
  286. @pytest.mark.platform_arm_ascend_training
  287. @pytest.mark.platform_x86_ascend_training
  288. @pytest.mark.platform_x86_gpu_training
  289. @pytest.mark.platform_x86_cpu
  290. @pytest.mark.env_onecard
  291. def test_linspace():
  292. actual = onp.linspace(2.0, 3.0, dtype=onp.float32)
  293. expected = mnp.linspace(2.0, 3.0).asnumpy()
  294. match_array(actual, expected, error=6)
  295. actual = onp.linspace(2.0, 3.0, num=5, dtype=onp.float32)
  296. expected = mnp.linspace(2.0, 3.0, num=5).asnumpy()
  297. match_array(actual, expected, error=6)
  298. actual = onp.linspace(
  299. 2.0, 3.0, num=5, endpoint=False, dtype=onp.float32)
  300. expected = mnp.linspace(2.0, 3.0, num=5, endpoint=False).asnumpy()
  301. match_array(actual, expected, error=6)
  302. actual = onp.linspace(2.0, 3.0, num=5, retstep=True, dtype=onp.float32)
  303. expected = mnp.linspace(2.0, 3.0, num=5, retstep=True)
  304. match_array(actual[0], expected[0].asnumpy())
  305. assert actual[1] == expected[1].asnumpy()
  306. actual = onp.linspace(2.0, [3, 4, 5], num=5,
  307. endpoint=False, dtype=onp.float32)
  308. expected = mnp.linspace(
  309. 2.0, [3, 4, 5], num=5, endpoint=False).asnumpy()
  310. match_array(actual, expected, error=6)
  311. actual = onp.linspace(2.0, [[3, 4, 5]], num=5, endpoint=False, axis=2)
  312. expected = mnp.linspace(2.0, [[3, 4, 5]], num=5, endpoint=False, axis=2).asnumpy()
  313. match_array(actual, expected, error=6)
  314. start = onp.random.random([2, 1, 4]).astype("float32")
  315. stop = onp.random.random([1, 5, 1]).astype("float32")
  316. actual = onp.linspace(start, stop, num=20, retstep=True,
  317. endpoint=False, dtype=onp.float32)
  318. expected = mnp.linspace(to_tensor(start), to_tensor(stop), num=20,
  319. retstep=True, endpoint=False)
  320. match_array(actual[0], expected[0].asnumpy(), error=6)
  321. match_array(actual[1], expected[1].asnumpy(), error=6)
  322. actual = onp.linspace(start, stop, num=20, retstep=True,
  323. endpoint=False, dtype=onp.int16)
  324. expected = mnp.linspace(to_tensor(start), to_tensor(stop), num=20,
  325. retstep=True, endpoint=False, dtype=mnp.int16)
  326. match_array(actual[0], expected[0].asnumpy(), error=6)
  327. match_array(actual[1], expected[1].asnumpy(), error=6)
  328. for axis in range(2):
  329. actual = onp.linspace(start, stop, num=20, retstep=False,
  330. endpoint=False, dtype=onp.float32, axis=axis)
  331. expected = mnp.linspace(to_tensor(start), to_tensor(stop), num=20,
  332. retstep=False, endpoint=False, dtype=mnp.float32, axis=axis)
  333. match_array(actual, expected.asnumpy(), error=6)
  334. @pytest.mark.level1
  335. @pytest.mark.platform_arm_ascend_training
  336. @pytest.mark.platform_x86_ascend_training
  337. @pytest.mark.platform_x86_gpu_training
  338. @pytest.mark.platform_x86_cpu
  339. @pytest.mark.env_onecard
  340. def test_logspace():
  341. actual = onp.logspace(2.0, 3.0, dtype=onp.float32)
  342. expected = mnp.logspace(2.0, 3.0).asnumpy()
  343. match_array(actual, expected, error=3)
  344. actual = onp.logspace(2.0, 3.0, num=5, dtype=onp.float32)
  345. expected = mnp.logspace(2.0, 3.0, num=5).asnumpy()
  346. match_array(actual, expected, error=3)
  347. actual = onp.logspace(
  348. 2.0, 3.0, num=5, endpoint=False, dtype=onp.float32)
  349. expected = mnp.logspace(2.0, 3.0, num=5, endpoint=False).asnumpy()
  350. match_array(actual, expected, error=3)
  351. actual = onp.logspace(2.0, [3, 4, 5], num=5, base=2,
  352. endpoint=False, dtype=onp.float32)
  353. expected = mnp.logspace(
  354. 2.0, [3, 4, 5], num=5, base=2, endpoint=False).asnumpy()
  355. match_array(actual, expected, error=3)
  356. @pytest.mark.level1
  357. @pytest.mark.platform_arm_ascend_training
  358. @pytest.mark.platform_x86_ascend_training
  359. @pytest.mark.platform_x86_gpu_training
  360. @pytest.mark.platform_x86_cpu
  361. @pytest.mark.env_onecard
  362. def test_empty():
  363. test_case = Cases()
  364. for shape in test_case.all_shapes:
  365. for mnp_dtype, onp_dtype in zip(test_case.mnp_dtypes,
  366. test_case.onp_dtypes):
  367. actual = mnp.empty(shape, mnp_dtype).asnumpy()
  368. expected = onp.empty(shape, onp_dtype)
  369. match_meta(actual, expected)
  370. @pytest.mark.level1
  371. @pytest.mark.platform_arm_ascend_training
  372. @pytest.mark.platform_x86_ascend_training
  373. @pytest.mark.platform_x86_gpu_training
  374. @pytest.mark.platform_x86_cpu
  375. @pytest.mark.env_onecard
  376. def test_empty_like():
  377. test_case = Cases()
  378. for mnp_proto, onp_proto in zip(test_case.mnp_prototypes, test_case.onp_prototypes):
  379. actual = mnp.empty_like(mnp_proto).asnumpy()
  380. expected = onp.empty_like(onp_proto)
  381. assert actual.shape == expected.shape
  382. for mnp_dtype, onp_dtype in zip(test_case.mnp_dtypes,
  383. test_case.onp_dtypes):
  384. actual = mnp.empty_like(mnp_proto, dtype=mnp_dtype).asnumpy()
  385. expected = onp.empty_like(onp_proto, dtype=onp_dtype)
  386. match_meta(actual, expected)
  387. def run_x_like(mnp_fn, onp_fn):
  388. test_case = Cases()
  389. for mnp_proto, onp_proto in zip(test_case.mnp_prototypes, test_case.onp_prototypes):
  390. actual = mnp_fn(mnp_proto).asnumpy()
  391. expected = onp_fn(onp_proto)
  392. match_array(actual, expected)
  393. for shape in test_case.all_shapes:
  394. actual = mnp_fn(mnp_proto, shape=shape).asnumpy()
  395. expected = onp_fn(onp_proto, shape=shape)
  396. match_array(actual, expected)
  397. for mnp_dtype, onp_dtype in zip(test_case.mnp_dtypes,
  398. test_case.onp_dtypes):
  399. actual = mnp_fn(mnp_proto, dtype=mnp_dtype).asnumpy()
  400. expected = onp_fn(onp_proto, dtype=onp_dtype)
  401. match_array(actual, expected)
  402. actual = mnp_fn(mnp_proto, dtype=mnp_dtype,
  403. shape=shape).asnumpy()
  404. expected = onp_fn(onp_proto, dtype=onp_dtype, shape=shape)
  405. match_array(actual, expected)
  406. @pytest.mark.level1
  407. @pytest.mark.platform_arm_ascend_training
  408. @pytest.mark.platform_x86_ascend_training
  409. @pytest.mark.platform_x86_gpu_training
  410. @pytest.mark.platform_x86_cpu
  411. @pytest.mark.env_onecard
  412. def test_ones_like():
  413. run_x_like(mnp.ones_like, onp.ones_like)
  414. @pytest.mark.level1
  415. @pytest.mark.platform_arm_ascend_training
  416. @pytest.mark.platform_x86_ascend_training
  417. @pytest.mark.platform_x86_gpu_training
  418. @pytest.mark.platform_x86_cpu
  419. @pytest.mark.env_onecard
  420. def test_zeros_like():
  421. run_x_like(mnp.zeros_like, onp.zeros_like)
  422. @pytest.mark.level1
  423. @pytest.mark.platform_arm_ascend_training
  424. @pytest.mark.platform_x86_ascend_training
  425. @pytest.mark.platform_x86_gpu_training
  426. @pytest.mark.platform_x86_cpu
  427. @pytest.mark.env_onecard
  428. def test_full_like():
  429. test_case = Cases()
  430. for mnp_proto, onp_proto in zip(test_case.mnp_prototypes, test_case.onp_prototypes):
  431. shape = onp.zeros_like(onp_proto).shape
  432. fill_value = rand_int()
  433. actual = mnp.full_like(mnp_proto, to_tensor(fill_value)).asnumpy()
  434. expected = onp.full_like(onp_proto, fill_value)
  435. match_array(actual, expected)
  436. for i in range(len(shape) - 1, 0, -1):
  437. fill_value = rand_int(*shape[i:])
  438. actual = mnp.full_like(mnp_proto, to_tensor(fill_value)).asnumpy()
  439. expected = onp.full_like(onp_proto, fill_value)
  440. match_array(actual, expected)
  441. fill_value = rand_int(1, *shape[i + 1:])
  442. actual = mnp.full_like(mnp_proto, to_tensor(fill_value)).asnumpy()
  443. expected = onp.full_like(onp_proto, fill_value)
  444. match_array(actual, expected)
  445. @pytest.mark.level1
  446. @pytest.mark.platform_arm_ascend_training
  447. @pytest.mark.platform_x86_ascend_training
  448. @pytest.mark.platform_x86_gpu_training
  449. @pytest.mark.platform_x86_cpu
  450. @pytest.mark.env_onecard
  451. def test_tri_triu_tril():
  452. x = mnp.ones((16, 32), dtype="bool")
  453. match_array(mnp.tril(x).asnumpy(), onp.tril(x.asnumpy()))
  454. match_array(mnp.tril(x, -1).asnumpy(), onp.tril(x.asnumpy(), -1))
  455. match_array(mnp.triu(x).asnumpy(), onp.triu(x.asnumpy()))
  456. match_array(mnp.triu(x, -1).asnumpy(), onp.triu(x.asnumpy(), -1))
  457. x = mnp.ones((64, 64), dtype="uint8")
  458. match_array(mnp.tril(x).asnumpy(), onp.tril(x.asnumpy()))
  459. match_array(mnp.tril(x, 25).asnumpy(), onp.tril(x.asnumpy(), 25))
  460. match_array(mnp.triu(x).asnumpy(), onp.triu(x.asnumpy()))
  461. match_array(mnp.triu(x, 25).asnumpy(), onp.triu(x.asnumpy(), 25))
  462. match_array(mnp.tri(64, 64).asnumpy(), onp.tri(64, 64))
  463. match_array(mnp.tri(64, 64, -10).asnumpy(), onp.tri(64, 64, -10))
  464. @pytest.mark.level1
  465. @pytest.mark.platform_x86_gpu_training
  466. @pytest.mark.platform_x86_cpu
  467. @pytest.mark.env_onecard
  468. def test_nancumsum():
  469. x = rand_int(2, 3, 4, 5)
  470. x[0][2][1][3] = onp.nan
  471. x[1][0][2][4] = onp.nan
  472. x[1][1][1][1] = onp.nan
  473. match_res(mnp.nancumsum, onp.nancumsum, x)
  474. match_res(mnp.nancumsum, onp.nancumsum, x, axis=-2)
  475. match_res(mnp.nancumsum, onp.nancumsum, x, axis=0)
  476. match_res(mnp.nancumsum, onp.nancumsum, x, axis=3)
  477. def mnp_diagonal(arr):
  478. return mnp.diagonal(arr, offset=2, axis1=-1, axis2=0)
  479. def onp_diagonal(arr):
  480. return onp.diagonal(arr, offset=2, axis1=-1, axis2=0)
  481. @pytest.mark.level1
  482. @pytest.mark.platform_arm_ascend_training
  483. @pytest.mark.platform_x86_ascend_training
  484. @pytest.mark.platform_x86_gpu_training
  485. @pytest.mark.platform_x86_cpu
  486. @pytest.mark.env_onecard
  487. def test_diagonal():
  488. arr = rand_int(3, 5)
  489. for i in [-1, 0, 2]:
  490. match_res(mnp.diagonal, onp.diagonal, arr, offset=i, axis1=0, axis2=1)
  491. match_res(mnp.diagonal, onp.diagonal, arr, offset=i, axis1=1, axis2=0)
  492. arr = rand_int(7, 4, 9)
  493. for i in [-1, 0, 2]:
  494. match_res(mnp.diagonal, onp.diagonal, arr, offset=i, axis1=0, axis2=-1)
  495. match_res(mnp.diagonal, onp.diagonal, arr, offset=i, axis1=-2, axis2=2)
  496. match_res(mnp.diagonal, onp.diagonal, arr,
  497. offset=i, axis1=-1, axis2=-2)
  498. def mnp_trace(arr):
  499. return mnp.trace(arr, offset=4, axis1=1, axis2=2)
  500. def onp_trace(arr):
  501. return onp.trace(arr, offset=4, axis1=1, axis2=2)
  502. @pytest.mark.level1
  503. @pytest.mark.platform_arm_ascend_training
  504. @pytest.mark.platform_x86_ascend_training
  505. @pytest.mark.platform_x86_gpu_training
  506. @pytest.mark.platform_x86_cpu
  507. @pytest.mark.env_onecard
  508. def test_trace():
  509. arr = rand_int(3, 5)
  510. for i in [-1, 0]:
  511. match_res(mnp.trace, onp.trace, arr, offset=i, axis1=0, axis2=1)
  512. match_res(mnp.trace, onp.trace, arr, offset=i, axis1=1, axis2=0)
  513. arr = rand_int(7, 4, 9)
  514. for i in [-1, 0, 2]:
  515. match_res(mnp.trace, onp.trace, arr, offset=i, axis1=0, axis2=-1)
  516. match_res(mnp.trace, onp.trace, arr, offset=i, axis1=-2, axis2=2)
  517. match_res(mnp.trace, onp.trace, arr, offset=i, axis1=-1, axis2=-2)
  518. def mnp_meshgrid(*xi):
  519. a = mnp.meshgrid(*xi)
  520. b = mnp.meshgrid(*xi, sparse=True)
  521. c = mnp.meshgrid(*xi, indexing='ij')
  522. d = mnp.meshgrid(*xi, sparse=False, indexing='ij')
  523. return a, b, c, d
  524. def onp_meshgrid(*xi):
  525. a = onp.meshgrid(*xi)
  526. b = onp.meshgrid(*xi, sparse=True)
  527. c = onp.meshgrid(*xi, indexing='ij')
  528. d = onp.meshgrid(*xi, sparse=False, indexing='ij')
  529. return a, b, c, d
  530. @pytest.mark.level1
  531. @pytest.mark.platform_arm_ascend_training
  532. @pytest.mark.platform_x86_ascend_training
  533. @pytest.mark.platform_x86_gpu_training
  534. @pytest.mark.platform_x86_cpu
  535. @pytest.mark.env_onecard
  536. def test_meshgrid():
  537. xi = (onp.full(3, 2), onp.full(1, 5), onp.full(
  538. (2, 3), 9), onp.full((4, 5, 6), 7))
  539. for i in range(len(xi)):
  540. arrs = xi[i:]
  541. mnp_arrs = map(to_tensor, arrs)
  542. for mnp_res, onp_res in zip(mnp_meshgrid(*mnp_arrs), onp_meshgrid(*arrs)):
  543. match_all_arrays(mnp_res, onp_res)
  544. @pytest.mark.level1
  545. @pytest.mark.platform_arm_ascend_training
  546. @pytest.mark.platform_x86_ascend_training
  547. @pytest.mark.platform_x86_gpu_training
  548. @pytest.mark.platform_x86_cpu
  549. @pytest.mark.env_onecard
  550. def test_mgrid():
  551. mnp_res = mnp.mgrid[0:5]
  552. onp_res = onp.mgrid[0:5]
  553. match_all_arrays(mnp_res, onp_res, error=5)
  554. mnp_res = mnp.mgrid[2:30:4j, -10:20:7, 2:5:0.5]
  555. onp_res = onp.mgrid[2:30:4j, -10:20:7, 2:5:0.5]
  556. match_all_arrays(mnp_res, onp_res, error=5)
  557. @pytest.mark.level1
  558. @pytest.mark.platform_arm_ascend_training
  559. @pytest.mark.platform_x86_ascend_training
  560. @pytest.mark.platform_x86_gpu_training
  561. @pytest.mark.platform_x86_cpu
  562. @pytest.mark.env_onecard
  563. def test_ogrid():
  564. mnp_res = mnp.ogrid[0:5]
  565. onp_res = onp.ogrid[0:5]
  566. match_all_arrays(mnp_res, onp_res, error=5)
  567. mnp_res = mnp.ogrid[2:30:4j, -10:20:7, 2:5:0.5]
  568. onp_res = onp.ogrid[2:30:4j, -10:20:7, 2:5:0.5]
  569. match_all_arrays(mnp_res, onp_res, error=5)
  570. @pytest.mark.level1
  571. @pytest.mark.platform_arm_ascend_training
  572. @pytest.mark.platform_x86_ascend_training
  573. @pytest.mark.platform_x86_gpu_training
  574. @pytest.mark.platform_x86_cpu
  575. @pytest.mark.env_onecard
  576. def test_diagflat():
  577. arrs = [rand_int(2, 3)]
  578. for arr in arrs:
  579. for i in [-2, 0, 7]:
  580. match_res(mnp.diagflat, onp.diagflat, arr, k=i)
  581. @pytest.mark.level1
  582. @pytest.mark.platform_arm_ascend_training
  583. @pytest.mark.platform_x86_ascend_training
  584. @pytest.mark.platform_x86_gpu_training
  585. @pytest.mark.platform_x86_cpu
  586. @pytest.mark.env_onecard
  587. def test_diag():
  588. arrs = [rand_int(7), rand_int(5, 5), rand_int(3, 8), rand_int(9, 6)]
  589. for arr in arrs:
  590. for i in [-10, -5, -1, 0, 2, 5, 6, 10]:
  591. match_res(mnp.diag, onp.diag, arr, k=i)
  592. @pytest.mark.level1
  593. @pytest.mark.platform_arm_ascend_training
  594. @pytest.mark.platform_x86_ascend_training
  595. @pytest.mark.platform_x86_gpu_training
  596. @pytest.mark.platform_x86_cpu
  597. @pytest.mark.env_onecard
  598. def test_diag_indices():
  599. mnp_res = mnp.diag_indices(5, 7)
  600. onp_res = onp.diag_indices(5, 7)
  601. match_all_arrays(mnp_res, onp_res)
  602. def mnp_ix_(*args):
  603. return mnp.ix_(*args)
  604. def onp_ix_(*args):
  605. return onp.ix_(*args)
  606. @pytest.mark.level1
  607. @pytest.mark.platform_arm_ascend_training
  608. @pytest.mark.platform_x86_ascend_training
  609. @pytest.mark.platform_x86_gpu_training
  610. @pytest.mark.platform_x86_cpu
  611. @pytest.mark.env_onecard
  612. def test_ix_():
  613. arrs = [rand_int(i + 1) for i in range(10)]
  614. for i in range(10):
  615. test_arrs = arrs[:i + 1]
  616. match_res(mnp_ix_, onp_ix_, *test_arrs)
  617. def mnp_indices():
  618. a = mnp.indices((2, 3))
  619. b = mnp.indices((2, 3, 4), sparse=True)
  620. return a, b
  621. def onp_indices():
  622. a = onp.indices((2, 3))
  623. b = onp.indices((2, 3, 4), sparse=True)
  624. return a, b
  625. def test_indices():
  626. run_multi_test(mnp_indices, onp_indices, ())
  627. @pytest.mark.level1
  628. @pytest.mark.platform_arm_ascend_training
  629. @pytest.mark.platform_x86_ascend_training
  630. @pytest.mark.platform_x86_gpu_training
  631. @pytest.mark.platform_x86_cpu
  632. @pytest.mark.env_onecard
  633. def test_geomspace():
  634. start = onp.arange(1, 7).reshape(2, 3)
  635. end = [1000, 2000, 3000]
  636. match_array(mnp.geomspace(1, 256, num=9).asnumpy(),
  637. onp.geomspace(1, 256, num=9), error=1)
  638. match_array(mnp.geomspace(1, 256, num=8, endpoint=False).asnumpy(),
  639. onp.geomspace(1, 256, num=8, endpoint=False), error=1)
  640. match_array(mnp.geomspace(to_tensor(start), end, num=4).asnumpy(),
  641. onp.geomspace(start, end, num=4), error=1)
  642. match_array(mnp.geomspace(to_tensor(start), end, num=4, endpoint=False).asnumpy(),
  643. onp.geomspace(start, end, num=4, endpoint=False), error=1)
  644. match_array(mnp.geomspace(to_tensor(start), end, num=4, axis=-1).asnumpy(),
  645. onp.geomspace(start, end, num=4, axis=-1), error=1)
  646. match_array(mnp.geomspace(to_tensor(start), end, num=4, endpoint=False, axis=-1).asnumpy(),
  647. onp.geomspace(start, end, num=4, endpoint=False, axis=-1), error=1)
  648. start = onp.arange(1, 1 + 2*3*4*5).reshape(2, 3, 4, 5)
  649. end = [1000, 2000, 3000, 4000, 5000]
  650. for i in range(-5, 5):
  651. match_array(mnp.geomspace(to_tensor(start), end, num=4, axis=i).asnumpy(),
  652. onp.geomspace(start, end, num=4, axis=i), error=1)
  653. @pytest.mark.level1
  654. @pytest.mark.platform_arm_ascend_training
  655. @pytest.mark.platform_x86_ascend_training
  656. @pytest.mark.platform_x86_gpu_training
  657. @pytest.mark.platform_x86_cpu
  658. @pytest.mark.env_onecard
  659. def test_vander():
  660. arrs = [rand_int(i + 3) for i in range(3)]
  661. for i in range(3):
  662. mnp_vander = mnp.vander(to_tensor(arrs[i]))
  663. onp_vander = onp.vander(arrs[i])
  664. match_all_arrays(mnp_vander, onp_vander, error=1e-4)
  665. mnp_vander = mnp.vander(to_tensor(arrs[i]), N=2, increasing=True)
  666. onp_vander = onp.vander(arrs[i], N=2, increasing=True)
  667. match_all_arrays(mnp_vander, onp_vander, error=1e-4)
  668. @pytest.mark.level1
  669. @pytest.mark.platform_arm_ascend_training
  670. @pytest.mark.platform_x86_ascend_training
  671. @pytest.mark.platform_x86_gpu_training
  672. @pytest.mark.platform_x86_cpu
  673. @pytest.mark.env_onecard
  674. def test_asarray_exception():
  675. with pytest.raises(TypeError):
  676. mnp.asarray({1, 2, 3})
  677. @pytest.mark.level1
  678. @pytest.mark.platform_arm_ascend_training
  679. @pytest.mark.platform_x86_ascend_training
  680. @pytest.mark.platform_x86_gpu_training
  681. @pytest.mark.platform_x86_cpu
  682. @pytest.mark.env_onecard
  683. def test_linspace_exception():
  684. with pytest.raises(TypeError):
  685. mnp.linspace(0, 1, num=2.5)
  686. @pytest.mark.level1
  687. @pytest.mark.platform_arm_ascend_training
  688. @pytest.mark.platform_x86_ascend_training
  689. @pytest.mark.platform_x86_gpu_training
  690. @pytest.mark.platform_x86_cpu
  691. @pytest.mark.env_onecard
  692. def test_empty_like_exception():
  693. with pytest.raises(ValueError):
  694. mnp.empty_like([[1, 2, 3], [4, 5]])