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

如何将二维numpy数组中的-1替换为np.nan并解决索引报错问题

问题解决:numpy数组替换-1为nan的实现方案

报错原因

你代码中的嵌套循环逻辑存在索引使用错误:for row in float_sample遍历得到的row是单行数数组,不是行索引值;后续遍历得到的ele是元素实际值,也不是列索引值。用float_sample[row][ele]赋值时,把数组和浮点值作为索引传入,触发了索引类型不匹配的报错。

numpy处理这类批量元素替换无需写循环,直接用向量化布尔索引操作即可,运行效率远高于嵌套循环。

正确实现代码

import numpy as np

sample = np.array([[-1, 1, -1, 1], [-1, 2, -1, 2], [-1, 3, 3, 3] ,[-1, 4, 4, 4], [-1, 5, 5, 5], [6, 6, 6, -1], [7, 7, 7, -1], [8, 8, -1, -1], [9, 9, -1, -1]])
float_sample = sample.astype(np.float64)
# 批量替换所有-1为nan
float_sample[float_sample == -1] = np.nan

# 后续直接调用np.nanmedian计算每列忽略nan的中位数
col_medians = np.nanmedian(float_sample, axis=0)

如果你需要修改原有循环逻辑验证思路,改为遍历索引即可,仅作为逻辑修正参考,不推荐生产环境使用:

for i in range(float_sample.shape[0]):
    for j in range(float_sample.shape[1]):
        if float_sample[i][j] == -1:
            float_sample[i][j] = np.nan

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:54:02