如何在 DynamoDB 上存储 numpy.ndarray?



当我调用face_encodings函数时,我有这个numpy.ndarray由@ageitgey的facial_recognition Python库生成的。我需要将此数据保存到亚马逊的 DynamoDB;但我不确定如何。

当我运行face_encodings函数时,我得到的numpy.ndarray是从给定图像中表示一个人的脸。我可以使用这些数据与另一张图像进行比较,并检查该人(表示为编码)是否存在于该图像中。

我以为我可以将numpy.ndarray保存为二进制文件(使用 numpy.ndarray.tobytes,但我不确定如何将该二进制文件(当我从 DynamoDB 检索数据时)转换回numpy.ndarray

我要比较的代码应该是这样的:

unknown_encoding = face_recognition.face_encodings(unknown_picture)[0]
# database_encoding_array should come from DynamoDB
results = face_recognition.compare_faces(database_encoding_array, unknown_encoding, tolerance=0.595)
# results is an array of booleans

总之,我不知道将numpy.ndarray保存到 DynamoDB 的最佳方法是什么,以及如何在以后查询它。

您可以尝试使用ndarray.tostringresults转换为字节字符串。对于 Dynamo 来说,这应该很简单。

arr = np.array([1, 2])
encoded = arr.tostring()
encoded
# b'x01x00x00x00x00x00x00x00x02x00x00x00x00x00x00x00'

然后,可以使用np.frombuffer恢复阵列。

np.array_equal(arr, np.frombuffer(encoded, dtype=int))
# True

最新更新