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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834
  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.level1
  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. start = onp.random.random([2, 1, 4]).astype("float32")
  312. stop = onp.random.random([1, 5, 1]).astype("float32")
  313. actual = onp.linspace(start, stop, num=20, retstep=True,
  314. endpoint=False, dtype=onp.float32)
  315. expected = mnp.linspace(to_tensor(start), to_tensor(stop), num=20,
  316. retstep=True, endpoint=False)
  317. match_array(actual[0], expected[0].asnumpy(), error=6)
  318. match_array(actual[1], expected[1].asnumpy(), error=6)
  319. actual = onp.linspace(start, stop, num=20, retstep=True,
  320. endpoint=False, dtype=onp.int16)
  321. expected = mnp.linspace(to_tensor(start), to_tensor(stop), num=20,
  322. retstep=True, endpoint=False, dtype=mnp.int16)
  323. match_array(actual[0], expected[0].asnumpy(), error=6)
  324. match_array(actual[1], expected[1].asnumpy(), error=6)
  325. for axis in range(2):
  326. actual = onp.linspace(start, stop, num=20, retstep=False,
  327. endpoint=False, dtype=onp.float32, axis=axis)
  328. expected = mnp.linspace(to_tensor(start), to_tensor(stop), num=20,
  329. retstep=False, endpoint=False, dtype=mnp.float32, axis=axis)
  330. match_array(actual, expected.asnumpy(), error=6)
  331. @pytest.mark.level1
  332. @pytest.mark.platform_arm_ascend_training
  333. @pytest.mark.platform_x86_ascend_training
  334. @pytest.mark.platform_x86_gpu_training
  335. @pytest.mark.platform_x86_cpu
  336. @pytest.mark.env_onecard
  337. def test_logspace():
  338. actual = onp.logspace(2.0, 3.0, dtype=onp.float32)
  339. expected = mnp.logspace(2.0, 3.0).asnumpy()
  340. match_array(actual, expected, error=3)
  341. actual = onp.logspace(2.0, 3.0, num=5, dtype=onp.float32)
  342. expected = mnp.logspace(2.0, 3.0, num=5).asnumpy()
  343. match_array(actual, expected, error=3)
  344. actual = onp.logspace(
  345. 2.0, 3.0, num=5, endpoint=False, dtype=onp.float32)
  346. expected = mnp.logspace(2.0, 3.0, num=5, endpoint=False).asnumpy()
  347. match_array(actual, expected, error=3)
  348. actual = onp.logspace(2.0, [3, 4, 5], num=5, base=2,
  349. endpoint=False, dtype=onp.float32)
  350. expected = mnp.logspace(
  351. 2.0, [3, 4, 5], num=5, base=2, endpoint=False).asnumpy()
  352. match_array(actual, expected, error=3)
  353. @pytest.mark.level1
  354. @pytest.mark.platform_arm_ascend_training
  355. @pytest.mark.platform_x86_ascend_training
  356. @pytest.mark.platform_x86_gpu_training
  357. @pytest.mark.platform_x86_cpu
  358. @pytest.mark.env_onecard
  359. def test_empty():
  360. test_case = Cases()
  361. for shape in test_case.all_shapes:
  362. for mnp_dtype, onp_dtype in zip(test_case.mnp_dtypes,
  363. test_case.onp_dtypes):
  364. actual = mnp.empty(shape, mnp_dtype).asnumpy()
  365. expected = onp.empty(shape, onp_dtype)
  366. match_meta(actual, expected)
  367. @pytest.mark.level1
  368. @pytest.mark.platform_arm_ascend_training
  369. @pytest.mark.platform_x86_ascend_training
  370. @pytest.mark.platform_x86_gpu_training
  371. @pytest.mark.platform_x86_cpu
  372. @pytest.mark.env_onecard
  373. def test_empty_like():
  374. test_case = Cases()
  375. for mnp_proto, onp_proto in zip(test_case.mnp_prototypes, test_case.onp_prototypes):
  376. actual = mnp.empty_like(mnp_proto).asnumpy()
  377. expected = onp.empty_like(onp_proto)
  378. assert actual.shape == expected.shape
  379. for mnp_dtype, onp_dtype in zip(test_case.mnp_dtypes,
  380. test_case.onp_dtypes):
  381. actual = mnp.empty_like(mnp_proto, dtype=mnp_dtype).asnumpy()
  382. expected = onp.empty_like(onp_proto, dtype=onp_dtype)
  383. match_meta(actual, expected)
  384. def run_x_like(mnp_fn, onp_fn):
  385. test_case = Cases()
  386. for mnp_proto, onp_proto in zip(test_case.mnp_prototypes, test_case.onp_prototypes):
  387. actual = mnp_fn(mnp_proto).asnumpy()
  388. expected = onp_fn(onp_proto)
  389. match_array(actual, expected)
  390. for shape in test_case.all_shapes:
  391. actual = mnp_fn(mnp_proto, shape=shape).asnumpy()
  392. expected = onp_fn(onp_proto, shape=shape)
  393. match_array(actual, expected)
  394. for mnp_dtype, onp_dtype in zip(test_case.mnp_dtypes,
  395. test_case.onp_dtypes):
  396. actual = mnp_fn(mnp_proto, dtype=mnp_dtype).asnumpy()
  397. expected = onp_fn(onp_proto, dtype=onp_dtype)
  398. match_array(actual, expected)
  399. actual = mnp_fn(mnp_proto, dtype=mnp_dtype,
  400. shape=shape).asnumpy()
  401. expected = onp_fn(onp_proto, dtype=onp_dtype, shape=shape)
  402. match_array(actual, expected)
  403. @pytest.mark.level1
  404. @pytest.mark.platform_arm_ascend_training
  405. @pytest.mark.platform_x86_ascend_training
  406. @pytest.mark.platform_x86_gpu_training
  407. @pytest.mark.platform_x86_cpu
  408. @pytest.mark.env_onecard
  409. def test_ones_like():
  410. run_x_like(mnp.ones_like, onp.ones_like)
  411. @pytest.mark.level1
  412. @pytest.mark.platform_arm_ascend_training
  413. @pytest.mark.platform_x86_ascend_training
  414. @pytest.mark.platform_x86_gpu_training
  415. @pytest.mark.platform_x86_cpu
  416. @pytest.mark.env_onecard
  417. def test_zeros_like():
  418. run_x_like(mnp.zeros_like, onp.zeros_like)
  419. @pytest.mark.level1
  420. @pytest.mark.platform_arm_ascend_training
  421. @pytest.mark.platform_x86_ascend_training
  422. @pytest.mark.platform_x86_gpu_training
  423. @pytest.mark.platform_x86_cpu
  424. @pytest.mark.env_onecard
  425. def test_full_like():
  426. test_case = Cases()
  427. for mnp_proto, onp_proto in zip(test_case.mnp_prototypes, test_case.onp_prototypes):
  428. shape = onp.zeros_like(onp_proto).shape
  429. fill_value = rand_int()
  430. actual = mnp.full_like(mnp_proto, to_tensor(fill_value)).asnumpy()
  431. expected = onp.full_like(onp_proto, fill_value)
  432. match_array(actual, expected)
  433. for i in range(len(shape) - 1, 0, -1):
  434. fill_value = rand_int(*shape[i:])
  435. actual = mnp.full_like(mnp_proto, to_tensor(fill_value)).asnumpy()
  436. expected = onp.full_like(onp_proto, fill_value)
  437. match_array(actual, expected)
  438. fill_value = rand_int(1, *shape[i + 1:])
  439. actual = mnp.full_like(mnp_proto, to_tensor(fill_value)).asnumpy()
  440. expected = onp.full_like(onp_proto, fill_value)
  441. match_array(actual, expected)
  442. @pytest.mark.level1
  443. @pytest.mark.platform_arm_ascend_training
  444. @pytest.mark.platform_x86_ascend_training
  445. @pytest.mark.platform_x86_gpu_training
  446. @pytest.mark.platform_x86_cpu
  447. @pytest.mark.env_onecard
  448. def test_tri_triu_tril():
  449. x = mnp.ones((16, 32), dtype="bool")
  450. match_array(mnp.tril(x).asnumpy(), onp.tril(x.asnumpy()))
  451. match_array(mnp.tril(x, -1).asnumpy(), onp.tril(x.asnumpy(), -1))
  452. match_array(mnp.triu(x).asnumpy(), onp.triu(x.asnumpy()))
  453. match_array(mnp.triu(x, -1).asnumpy(), onp.triu(x.asnumpy(), -1))
  454. x = mnp.ones((64, 64), dtype="uint8")
  455. match_array(mnp.tril(x).asnumpy(), onp.tril(x.asnumpy()))
  456. match_array(mnp.tril(x, 25).asnumpy(), onp.tril(x.asnumpy(), 25))
  457. match_array(mnp.triu(x).asnumpy(), onp.triu(x.asnumpy()))
  458. match_array(mnp.triu(x, 25).asnumpy(), onp.triu(x.asnumpy(), 25))
  459. match_array(mnp.tri(64, 64).asnumpy(), onp.tri(64, 64))
  460. match_array(mnp.tri(64, 64, -10).asnumpy(), onp.tri(64, 64, -10))
  461. @pytest.mark.level1
  462. @pytest.mark.platform_x86_gpu_training
  463. @pytest.mark.platform_x86_cpu
  464. @pytest.mark.env_onecard
  465. def test_nancumsum():
  466. x = rand_int(2, 3, 4, 5)
  467. x[0][2][1][3] = onp.nan
  468. x[1][0][2][4] = onp.nan
  469. x[1][1][1][1] = onp.nan
  470. match_res(mnp.nancumsum, onp.nancumsum, x)
  471. match_res(mnp.nancumsum, onp.nancumsum, x, axis=-2)
  472. match_res(mnp.nancumsum, onp.nancumsum, x, axis=0)
  473. match_res(mnp.nancumsum, onp.nancumsum, x, axis=3)
  474. def mnp_diagonal(arr):
  475. return mnp.diagonal(arr, offset=2, axis1=-1, axis2=0)
  476. def onp_diagonal(arr):
  477. return onp.diagonal(arr, offset=2, axis1=-1, axis2=0)
  478. @pytest.mark.level1
  479. @pytest.mark.platform_arm_ascend_training
  480. @pytest.mark.platform_x86_ascend_training
  481. @pytest.mark.platform_x86_gpu_training
  482. @pytest.mark.platform_x86_cpu
  483. @pytest.mark.env_onecard
  484. def test_diagonal():
  485. arr = rand_int(3, 5)
  486. for i in [-1, 0, 2]:
  487. match_res(mnp.diagonal, onp.diagonal, arr, offset=i, axis1=0, axis2=1)
  488. match_res(mnp.diagonal, onp.diagonal, arr, offset=i, axis1=1, axis2=0)
  489. arr = rand_int(7, 4, 9)
  490. for i in [-1, 0, 2]:
  491. match_res(mnp.diagonal, onp.diagonal, arr, offset=i, axis1=0, axis2=-1)
  492. match_res(mnp.diagonal, onp.diagonal, arr, offset=i, axis1=-2, axis2=2)
  493. match_res(mnp.diagonal, onp.diagonal, arr,
  494. offset=i, axis1=-1, axis2=-2)
  495. def mnp_trace(arr):
  496. return mnp.trace(arr, offset=4, axis1=1, axis2=2)
  497. def onp_trace(arr):
  498. return onp.trace(arr, offset=4, axis1=1, axis2=2)
  499. @pytest.mark.level1
  500. @pytest.mark.platform_arm_ascend_training
  501. @pytest.mark.platform_x86_ascend_training
  502. @pytest.mark.platform_x86_gpu_training
  503. @pytest.mark.platform_x86_cpu
  504. @pytest.mark.env_onecard
  505. def test_trace():
  506. arr = rand_int(3, 5)
  507. for i in [-1, 0]:
  508. match_res(mnp.trace, onp.trace, arr, offset=i, axis1=0, axis2=1)
  509. match_res(mnp.trace, onp.trace, arr, offset=i, axis1=1, axis2=0)
  510. arr = rand_int(7, 4, 9)
  511. for i in [-1, 0, 2]:
  512. match_res(mnp.trace, onp.trace, arr, offset=i, axis1=0, axis2=-1)
  513. match_res(mnp.trace, onp.trace, arr, offset=i, axis1=-2, axis2=2)
  514. match_res(mnp.trace, onp.trace, arr, offset=i, axis1=-1, axis2=-2)
  515. def mnp_meshgrid(*xi):
  516. a = mnp.meshgrid(*xi)
  517. b = mnp.meshgrid(*xi, sparse=True)
  518. c = mnp.meshgrid(*xi, indexing='ij')
  519. d = mnp.meshgrid(*xi, sparse=False, indexing='ij')
  520. return a, b, c, d
  521. def onp_meshgrid(*xi):
  522. a = onp.meshgrid(*xi)
  523. b = onp.meshgrid(*xi, sparse=True)
  524. c = onp.meshgrid(*xi, indexing='ij')
  525. d = onp.meshgrid(*xi, sparse=False, indexing='ij')
  526. return a, b, c, d
  527. @pytest.mark.level1
  528. @pytest.mark.platform_arm_ascend_training
  529. @pytest.mark.platform_x86_ascend_training
  530. @pytest.mark.platform_x86_gpu_training
  531. @pytest.mark.platform_x86_cpu
  532. @pytest.mark.env_onecard
  533. def test_meshgrid():
  534. xi = (onp.full(3, 2), onp.full(1, 5), onp.full(
  535. (2, 3), 9), onp.full((4, 5, 6), 7))
  536. for i in range(len(xi)):
  537. arrs = xi[i:]
  538. mnp_arrs = map(to_tensor, arrs)
  539. for mnp_res, onp_res in zip(mnp_meshgrid(*mnp_arrs), onp_meshgrid(*arrs)):
  540. match_all_arrays(mnp_res, onp_res)
  541. @pytest.mark.level1
  542. @pytest.mark.platform_arm_ascend_training
  543. @pytest.mark.platform_x86_ascend_training
  544. @pytest.mark.platform_x86_gpu_training
  545. @pytest.mark.platform_x86_cpu
  546. @pytest.mark.env_onecard
  547. def test_mgrid():
  548. mnp_res = mnp.mgrid[0:5]
  549. onp_res = onp.mgrid[0:5]
  550. match_all_arrays(mnp_res, onp_res, error=5)
  551. mnp_res = mnp.mgrid[2:30:4j, -10:20:7, 2:5:0.5]
  552. onp_res = onp.mgrid[2:30:4j, -10:20:7, 2:5:0.5]
  553. match_all_arrays(mnp_res, onp_res, error=5)
  554. @pytest.mark.level1
  555. @pytest.mark.platform_arm_ascend_training
  556. @pytest.mark.platform_x86_ascend_training
  557. @pytest.mark.platform_x86_gpu_training
  558. @pytest.mark.platform_x86_cpu
  559. @pytest.mark.env_onecard
  560. def test_ogrid():
  561. mnp_res = mnp.ogrid[0:5]
  562. onp_res = onp.ogrid[0:5]
  563. match_all_arrays(mnp_res, onp_res, error=5)
  564. mnp_res = mnp.ogrid[2:30:4j, -10:20:7, 2:5:0.5]
  565. onp_res = onp.ogrid[2:30:4j, -10:20:7, 2:5:0.5]
  566. match_all_arrays(mnp_res, onp_res, error=5)
  567. @pytest.mark.level1
  568. @pytest.mark.platform_arm_ascend_training
  569. @pytest.mark.platform_x86_ascend_training
  570. @pytest.mark.platform_x86_gpu_training
  571. @pytest.mark.platform_x86_cpu
  572. @pytest.mark.env_onecard
  573. def test_diagflat():
  574. arrs = [rand_int(2, 3)]
  575. for arr in arrs:
  576. for i in [-2, 0, 7]:
  577. match_res(mnp.diagflat, onp.diagflat, arr, k=i)
  578. @pytest.mark.level1
  579. @pytest.mark.platform_arm_ascend_training
  580. @pytest.mark.platform_x86_ascend_training
  581. @pytest.mark.platform_x86_gpu_training
  582. @pytest.mark.platform_x86_cpu
  583. @pytest.mark.env_onecard
  584. def test_diag():
  585. arrs = [rand_int(7), rand_int(5, 5), rand_int(3, 8), rand_int(9, 6)]
  586. for arr in arrs:
  587. for i in [-10, -5, -1, 0, 2, 5, 6, 10]:
  588. match_res(mnp.diag, onp.diag, arr, k=i)
  589. @pytest.mark.level1
  590. @pytest.mark.platform_arm_ascend_training
  591. @pytest.mark.platform_x86_ascend_training
  592. @pytest.mark.platform_x86_gpu_training
  593. @pytest.mark.platform_x86_cpu
  594. @pytest.mark.env_onecard
  595. def test_diag_indices():
  596. mnp_res = mnp.diag_indices(5, 7)
  597. onp_res = onp.diag_indices(5, 7)
  598. match_all_arrays(mnp_res, onp_res)
  599. def mnp_ix_(*args):
  600. return mnp.ix_(*args)
  601. def onp_ix_(*args):
  602. return onp.ix_(*args)
  603. @pytest.mark.level1
  604. @pytest.mark.platform_arm_ascend_training
  605. @pytest.mark.platform_x86_ascend_training
  606. @pytest.mark.platform_x86_gpu_training
  607. @pytest.mark.platform_x86_cpu
  608. @pytest.mark.env_onecard
  609. def test_ix_():
  610. arrs = [rand_int(i + 1) for i in range(10)]
  611. for i in range(10):
  612. test_arrs = arrs[:i + 1]
  613. match_res(mnp_ix_, onp_ix_, *test_arrs)
  614. def mnp_indices():
  615. a = mnp.indices((2, 3))
  616. b = mnp.indices((2, 3, 4), sparse=True)
  617. return a, b
  618. def onp_indices():
  619. a = onp.indices((2, 3))
  620. b = onp.indices((2, 3, 4), sparse=True)
  621. return a, b
  622. def test_indices():
  623. run_multi_test(mnp_indices, onp_indices, ())
  624. @pytest.mark.level1
  625. @pytest.mark.platform_arm_ascend_training
  626. @pytest.mark.platform_x86_ascend_training
  627. @pytest.mark.platform_x86_gpu_training
  628. @pytest.mark.platform_x86_cpu
  629. @pytest.mark.env_onecard
  630. def test_geomspace():
  631. start = onp.arange(1, 7).reshape(2, 3)
  632. end = [1000, 2000, 3000]
  633. match_array(mnp.geomspace(1, 256, num=9).asnumpy(),
  634. onp.geomspace(1, 256, num=9), error=1)
  635. match_array(mnp.geomspace(1, 256, num=8, endpoint=False).asnumpy(),
  636. onp.geomspace(1, 256, num=8, endpoint=False), error=1)
  637. match_array(mnp.geomspace(to_tensor(start), end, num=4).asnumpy(),
  638. onp.geomspace(start, end, num=4), error=1)
  639. match_array(mnp.geomspace(to_tensor(start), end, num=4, endpoint=False).asnumpy(),
  640. onp.geomspace(start, end, num=4, endpoint=False), error=1)
  641. match_array(mnp.geomspace(to_tensor(start), end, num=4, axis=-1).asnumpy(),
  642. onp.geomspace(start, end, num=4, axis=-1), error=1)
  643. match_array(mnp.geomspace(to_tensor(start), end, num=4, endpoint=False, axis=-1).asnumpy(),
  644. onp.geomspace(start, end, num=4, endpoint=False, axis=-1), error=1)
  645. start = onp.arange(1, 1 + 2*3*4*5).reshape(2, 3, 4, 5)
  646. end = [1000, 2000, 3000, 4000, 5000]
  647. for i in range(-5, 5):
  648. match_array(mnp.geomspace(to_tensor(start), end, num=4, axis=i).asnumpy(),
  649. onp.geomspace(start, end, num=4, axis=i), error=1)
  650. @pytest.mark.level1
  651. @pytest.mark.platform_arm_ascend_training
  652. @pytest.mark.platform_x86_ascend_training
  653. @pytest.mark.platform_x86_gpu_training
  654. @pytest.mark.platform_x86_cpu
  655. @pytest.mark.env_onecard
  656. def test_vander():
  657. arrs = [rand_int(i + 3) for i in range(3)]
  658. for i in range(3):
  659. mnp_vander = mnp.vander(to_tensor(arrs[i]))
  660. onp_vander = onp.vander(arrs[i])
  661. match_all_arrays(mnp_vander, onp_vander, error=1e-4)
  662. mnp_vander = mnp.vander(to_tensor(arrs[i]), N=2, increasing=True)
  663. onp_vander = onp.vander(arrs[i], N=2, increasing=True)
  664. match_all_arrays(mnp_vander, onp_vander, error=1e-4)
  665. @pytest.mark.level1
  666. @pytest.mark.platform_arm_ascend_training
  667. @pytest.mark.platform_x86_ascend_training
  668. @pytest.mark.platform_x86_gpu_training
  669. @pytest.mark.platform_x86_cpu
  670. @pytest.mark.env_onecard
  671. def test_asarray_exception():
  672. with pytest.raises(TypeError):
  673. mnp.asarray({1, 2, 3})
  674. @pytest.mark.level1
  675. @pytest.mark.platform_arm_ascend_training
  676. @pytest.mark.platform_x86_ascend_training
  677. @pytest.mark.platform_x86_gpu_training
  678. @pytest.mark.platform_x86_cpu
  679. @pytest.mark.env_onecard
  680. def test_linspace_exception():
  681. with pytest.raises(TypeError):
  682. mnp.linspace(0, 1, num=2.5)
  683. @pytest.mark.level1
  684. @pytest.mark.platform_arm_ascend_training
  685. @pytest.mark.platform_x86_ascend_training
  686. @pytest.mark.platform_x86_gpu_training
  687. @pytest.mark.platform_x86_cpu
  688. @pytest.mark.env_onecard
  689. def test_empty_like_exception():
  690. with pytest.raises(ValueError):
  691. mnp.empty_like([[1, 2, 3], [4, 5]])