Follows test_vector except for input type numpy.ndarray
(self)
| 872 | |
| 873 | @unittest.skipIf(not _NUMPY_AVAILABLE, "numpy optional-dependency not installed.") |
| 874 | def test_vector_from_numpy(self): |
| 875 | """Follows test_vector except for input type numpy.ndarray""" |
| 876 | # Simple data values could be treated as any of our BinaryVectorDtypes |
| 877 | import numpy as np |
| 878 | |
| 879 | arr = np.array([2, 3]) |
| 880 | # INT8 |
| 881 | binary_vector_int8 = Binary.from_vector(arr, BinaryVectorDtype.INT8) |
| 882 | # as_vector |
| 883 | vector = binary_vector_int8.as_vector() |
| 884 | assert isinstance(vector, BinaryVector) |
| 885 | assert vector.data == arr.tolist() |
| 886 | # as_numpy_vector |
| 887 | vector_np = binary_vector_int8.as_vector(return_numpy=True) |
| 888 | assert isinstance(vector_np, BinaryVector) |
| 889 | assert isinstance(vector_np.data, np.ndarray) |
| 890 | assert np.all(vector.data == arr) |
| 891 | # PACKED_BIT |
| 892 | binary_vector_uint8 = Binary.from_vector(arr, BinaryVectorDtype.PACKED_BIT) |
| 893 | # as_vector |
| 894 | vector = binary_vector_uint8.as_vector() |
| 895 | assert isinstance(vector, BinaryVector) |
| 896 | assert vector.data == arr.tolist() |
| 897 | # as_numpy_vector |
| 898 | vector_np = binary_vector_uint8.as_vector(return_numpy=True) |
| 899 | assert isinstance(vector_np, BinaryVector) |
| 900 | assert isinstance(vector_np.data, np.ndarray) |
| 901 | assert np.all(vector_np.data == arr) |
| 902 | # FLOAT32 |
| 903 | binary_vector_float32 = Binary.from_vector(arr, BinaryVectorDtype.FLOAT32) |
| 904 | # as_vector |
| 905 | vector = binary_vector_float32.as_vector() |
| 906 | assert isinstance(vector, BinaryVector) |
| 907 | assert vector.data == arr.tolist() |
| 908 | # as_numpy_vector |
| 909 | vector_np = binary_vector_float32.as_vector(return_numpy=True) |
| 910 | assert isinstance(vector_np, BinaryVector) |
| 911 | assert isinstance(vector_np.data, np.ndarray) |
| 912 | assert np.all(vector_np.data == arr) |
| 913 | |
| 914 | # Invalid cases |
| 915 | with self.assertRaises(ValueError): |
| 916 | Binary.from_vector(np.array([-1]), BinaryVectorDtype.PACKED_BIT) |
| 917 | with self.assertRaises(ValueError): |
| 918 | Binary.from_vector(np.array([128]), BinaryVectorDtype.PACKED_BIT) |
| 919 | with self.assertRaises(ValueError): |
| 920 | Binary.from_vector(np.array([-198]), BinaryVectorDtype.INT8) |
| 921 | |
| 922 | # Unexpected cases |
| 923 | # Creating a vector of INT8 from a list of doubles will be caught by struct.pack |
| 924 | # Numpy's default behavior is to cast to the type requested. |
| 925 | list_floats = [-1.1, 1.1] |
| 926 | cast_bin = Binary.from_vector(np.array(list_floats), BinaryVectorDtype.INT8) |
| 927 | vector = cast_bin.as_vector() |
| 928 | vector_np = cast_bin.as_vector(return_numpy=True) |
| 929 | assert vector.data != list_floats |
| 930 | assert vector.data == vector_np.data.tolist() == [-1, 1] |
| 931 |
nothing calls this directly
no test coverage detected