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

NumPy数组类型转换函数求助:指定列转<U30其余列转float并转为tuple

实现代码
import numpy as np

def data_type_format(data, indexes):
    # 移除首行表头
    data_content = data[1:]
    res = []
    total_col = data_content.shape[1]
    # 预生成列类型标记,提升遍历效率
    is_str_col = [i in indexes for i in range(total_col)]
    for row in data_content:
        processed = []
        for idx, val in enumerate(row):
            if is_str_col[idx]:
                # 转换为长度30的Unicode类型
                processed.append(val.astype('<U30').item())
            else:
                processed.append(float(val))
        res.append(tuple(processed))
    return res
原有代码问题说明
  • 未移除输入numpy数组的首行表头数据,导致输出首行是表头内容
  • 逻辑混淆了行和列的判断逻辑,错误遍历列而非逐行逐列处理
  • 多余重复读取csv文件,输入参数data已经是load_mydata返回的处理后的numpy数组,不需要二次读取
  • 使用list作为变量名,覆盖Python内置类型,容易触发不可预期的错误
验证方式

直接使用你给出的测试代码运行即可:

data = load_mydata("location_review_data.csv")
data = data_type_format(data, [0, 1, 2, 3]) 
print(data[0])

输出结果和你给出的预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:45:03