You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS API响应中发送numpy数组及浮点值 支持非JSON格式吗

AWS API numpy数据传输及响应格式问题解答

1. 如何在AWS API的响应中发送numpy数组或者浮点类型数值?

原生JSON格式不支持numpy自定义数据类型,直接返回会触发序列化错误,可根据场景选择以下两种方案:

  • 小体积数据优先选JSON兼容方案:
    numpy标量浮点值调用.item()方法转成Python原生float类型,numpy数组调用.tolist()方法转成原生列表,同时可附带数组的dtype、shape参数方便接收端重构,示例代码:
    import numpy as np
    import json
    # 示例numpy数组
    np_arr = np.array([1.1, 2.2, 3.3], dtype=np.float32)
    # 构造可序列化的响应体
    response = {
        "statusCode": 200,
        "headers": {"Content-Type": "application/json"},
        "body": json.dumps({
            "data": np_arr.tolist(),
            "dtype": str(np_arr.dtype),
            "shape": list(np_arr.shape)
        })
    }
    
  • 大体积数组优先选二进制方案:
    用numpy.save()将数组序列化到字节流,返回二进制内容,传输效率更高。如果用Lambda作为后端,需要将二进制内容Base64编码,同时设置isBase64Encoded为True,示例代码:
    import numpy as np
    from io import BytesIO
    import base64
    
    buf = BytesIO()
    np.save(buf, np_arr)
    buf.seek(0)
    
    response = {
        "statusCode": 200,
        "headers": {"Content-Type": "application/octet-stream"},
        "body": base64.b64encode(buf.read()).decode("utf-8"),
        "isBase64Encoded": True
    }
    

注意:使用二进制方案需要提前在API Gateway设置中将application/octet-stream加入二进制媒体类型列表

2. 接收AWS REST API返回的响应时,如何获取其中的numpy ndarray对象?

对应发送端的两种方案分别处理:

  • 对应JSON兼容方案:
    解析响应JSON后,用返回的data、dtype、shape参数重构数组即可:
    import numpy as np
    import requests
    
    resp = requests.get("你的API地址").json()
    recv_arr = np.array(resp["data"], dtype=resp["dtype"]).reshape(resp["shape"])
    
  • 对应二进制方案:
    直接读取响应的二进制内容,用numpy.load()加载:
    import numpy as np
    import requests
    from io import BytesIO
    
    resp_content = requests.get("你的API地址").content
    recv_arr = np.load(BytesIO(resp_content))
    

3. AWS API响应除JSON格式外,还支持其他返回格式吗?

支持,AWS API Gateway没有限制返回格式,只需要在方法响应和集成响应中配置对应的Content-Type即可,常用的支持格式包括:

  • 二进制类:application/octet-stream、图片格式(image/png/image/jpeg)、application/pdf等
  • 文本类:text/plain、text/html、text/csv等
  • 其他结构化数据类:application/xml、application/x-protobuf等

所有非UTF-8编码的内容都需要在API Gateway的二进制媒体类型配置中添加对应Content-Type,避免自动转码导致数据损坏。


内容的提问来源于stack exchange,提问作者AmrutaHebli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:27:03