File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -28,9 +28,7 @@ class VectorBinaryDumper(VectorDumper):
2828 format = Format .BINARY
2929
3030 def dump (self , obj : 'Vector | np.ndarray' ) -> Buffer | None :
31- if not isinstance (obj , Vector ):
32- obj = Vector (obj )
33- return obj .to_binary ()
31+ return Vector ._to_db_binary (obj )
3432
3533
3634class VectorLoader (Loader ):
Original file line number Diff line number Diff line change @@ -86,6 +86,16 @@ def _to_db_binary(cls, value: object) -> bytes | None:
8686 if value is None :
8787 return value
8888
89+ # fast path for NumPy
90+ if NUMPY_AVAILABLE and isinstance (value , np .ndarray ):
91+ if value .ndim != 1 :
92+ raise ValueError ('expected ndim to be 1' )
93+
94+ if value .dtype != '>f4' :
95+ value = np .asarray (value , dtype = '>f4' )
96+
97+ return struct .pack ('>HH' , len (value ), 0 ) + value .tobytes ()
98+
8999 if not isinstance (value , cls ):
90100 value = cls (value ) # type: ignore
91101
You can’t perform that action at this time.
0 commit comments