如何在DynamoDB上存储numpy.ndarray?

时间:2019-02-14 17:13:01

标签: python arrays numpy amazon-dynamodb numpy-ndarray

调用numpy.ndarray函数时,我有@ageitgey's facial_recognition Python library生成的face_encodings。我需要将这些数据保存到Amazon的DynamoDB。但我不确定如何。

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

我认为我可以将numpy.ndarray保存为二进制文件(使用numpy.ndarray.tobytes,但是我不确定如何将二进制文件(当我从DynamoDB取回数据时)转换回{ {1}}。

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

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 保存到DynamoDB的最佳方法是什么,以及如何在以后查询它。

1 个答案:

答案 0 :(得分:1)

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

arr = np.array([1, 2])

encoded = arr.tostring()
encoded
# b'\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00'

然后可以使用np.frombuffer还原阵列。

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