scalars.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. import datetime as dt
  2. import pytest
  3. import numpy as np
  4. b = np.bool()
  5. b_ = np.bool_()
  6. u8 = np.uint64()
  7. i8 = np.int64()
  8. f8 = np.float64()
  9. c16 = np.complex128()
  10. U = np.str_()
  11. S = np.bytes_()
  12. # Construction
  13. class D:
  14. def __index__(self) -> int:
  15. return 0
  16. class C:
  17. def __complex__(self) -> complex:
  18. return 3j
  19. class B:
  20. def __int__(self) -> int:
  21. return 4
  22. class A:
  23. def __float__(self) -> float:
  24. return 4.0
  25. np.complex64(3j)
  26. np.complex64(A())
  27. np.complex64(C())
  28. np.complex128(3j)
  29. np.complex128(C())
  30. np.complex128(None)
  31. np.complex64("1.2")
  32. np.complex128(b"2j")
  33. np.int8(4)
  34. np.int16(3.4)
  35. np.int32(4)
  36. np.int64(-1)
  37. np.uint8(B())
  38. np.uint32()
  39. np.int32("1")
  40. np.int64(b"2")
  41. np.float16(A())
  42. np.float32(16)
  43. np.float64(3.0)
  44. np.float64(None)
  45. np.float32("1")
  46. np.float16(b"2.5")
  47. np.uint64(D())
  48. np.float32(D())
  49. np.complex64(D())
  50. np.bytes_(b"hello")
  51. np.bytes_("hello", 'utf-8')
  52. np.bytes_("hello", encoding='utf-8')
  53. np.str_("hello")
  54. np.str_(b"hello", 'utf-8')
  55. np.str_(b"hello", encoding='utf-8')
  56. # Array-ish semantics
  57. np.int8().real
  58. np.int16().imag
  59. np.int32().data
  60. np.int64().flags
  61. np.uint8().itemsize * 2
  62. np.uint16().ndim + 1
  63. np.uint32().strides
  64. np.uint64().shape
  65. # Time structures
  66. np.datetime64()
  67. np.datetime64(0, "D")
  68. np.datetime64(0, b"D")
  69. np.datetime64(0, ('ms', 3))
  70. np.datetime64("2019")
  71. np.datetime64(b"2019")
  72. np.datetime64("2019", "D")
  73. np.datetime64("2019", "us")
  74. np.datetime64("2019", "as")
  75. np.datetime64(np.datetime64())
  76. np.datetime64(np.datetime64())
  77. np.datetime64(dt.datetime(2000, 5, 3))
  78. np.datetime64(dt.datetime(2000, 5, 3), "D")
  79. np.datetime64(dt.datetime(2000, 5, 3), "us")
  80. np.datetime64(dt.datetime(2000, 5, 3), "as")
  81. np.datetime64(dt.date(2000, 5, 3))
  82. np.datetime64(dt.date(2000, 5, 3), "D")
  83. np.datetime64(dt.date(2000, 5, 3), "us")
  84. np.datetime64(dt.date(2000, 5, 3), "as")
  85. np.datetime64(None)
  86. np.datetime64(None, "D")
  87. np.timedelta64()
  88. np.timedelta64(0)
  89. np.timedelta64(0, "D")
  90. np.timedelta64(0, ('ms', 3))
  91. np.timedelta64(0, b"D")
  92. np.timedelta64("3")
  93. np.timedelta64(b"5")
  94. np.timedelta64(np.timedelta64(2))
  95. np.timedelta64(dt.timedelta(2))
  96. np.timedelta64(None)
  97. np.timedelta64(None, "D")
  98. np.void(1)
  99. np.void(np.int64(1))
  100. np.void(True)
  101. np.void(np.bool(True))
  102. np.void(b"test")
  103. np.void(np.bytes_("test"))
  104. np.void(object(), [("a", "O"), ("b", "O")])
  105. np.void(object(), dtype=[("a", "O"), ("b", "O")])
  106. # Protocols
  107. i8 = np.int64()
  108. u8 = np.uint64()
  109. f8 = np.float64()
  110. c16 = np.complex128()
  111. b = np.bool()
  112. td = np.timedelta64()
  113. U = np.str_("1")
  114. S = np.bytes_("1")
  115. AR = np.array(1, dtype=np.float64)
  116. int(i8)
  117. int(u8)
  118. int(f8)
  119. int(b)
  120. int(td)
  121. int(U)
  122. int(S)
  123. int(AR)
  124. with pytest.warns(np.exceptions.ComplexWarning):
  125. int(c16)
  126. float(i8)
  127. float(u8)
  128. float(f8)
  129. float(b_)
  130. float(td)
  131. float(U)
  132. float(S)
  133. float(AR)
  134. with pytest.warns(np.exceptions.ComplexWarning):
  135. float(c16)
  136. complex(i8)
  137. complex(u8)
  138. complex(f8)
  139. complex(c16)
  140. complex(b_)
  141. complex(td)
  142. complex(U)
  143. complex(AR)
  144. # Misc
  145. c16.dtype
  146. c16.real
  147. c16.imag
  148. c16.real.real
  149. c16.real.imag
  150. c16.ndim
  151. c16.size
  152. c16.itemsize
  153. c16.shape
  154. c16.strides
  155. c16.squeeze()
  156. c16.byteswap()
  157. c16.transpose()
  158. # Aliases
  159. np.byte()
  160. np.short()
  161. np.intc()
  162. np.intp()
  163. np.int_()
  164. np.longlong()
  165. np.ubyte()
  166. np.ushort()
  167. np.uintc()
  168. np.uintp()
  169. np.uint()
  170. np.ulonglong()
  171. np.half()
  172. np.single()
  173. np.double()
  174. np.longdouble()
  175. np.csingle()
  176. np.cdouble()
  177. np.clongdouble()
  178. b.item()
  179. i8.item()
  180. u8.item()
  181. f8.item()
  182. c16.item()
  183. U.item()
  184. S.item()
  185. b.tolist()
  186. i8.tolist()
  187. u8.tolist()
  188. f8.tolist()
  189. c16.tolist()
  190. U.tolist()
  191. S.tolist()
  192. b.ravel()
  193. i8.ravel()
  194. u8.ravel()
  195. f8.ravel()
  196. c16.ravel()
  197. U.ravel()
  198. S.ravel()
  199. b.flatten()
  200. i8.flatten()
  201. u8.flatten()
  202. f8.flatten()
  203. c16.flatten()
  204. U.flatten()
  205. S.flatten()
  206. b.reshape(1)
  207. i8.reshape(1)
  208. u8.reshape(1)
  209. f8.reshape(1)
  210. c16.reshape(1)
  211. U.reshape(1)
  212. S.reshape(1)