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

如何遍历numpy矩阵?遍历行时提示索引类型错误该怎么解决

错误原因

你写for i in X时,迭代得到的i是矩阵每一行的元素组成的浮点类型一维数组,不是行对应的整数索引。将浮点数组作为下标访问X[i],就会触发IndexError: arrays used as indices must be of integer (or boolean) type报错。

解决方法

有两种可行的写法,按需选择即可:

方法1:遍历行索引

如果你确实需要通过索引访问行,循环改为遍历整数索引范围:

loglike = []
# i为0到矩阵行数-1的整数索引
for i in range(len(X_test)):
    p = np.sum(np.multiply(X[i], np.log(posprob)) + np.multiply((1-X[i]), np.log(1-posprob)))
    loglike.append(p)
print(loglike)

对应的打印循环修改为:

for i in range(len(X)):
    print(X[i])

方法2:直接使用迭代得到的行对象

既然直接迭代矩阵已经能拿到每一行的内容,不需要再通过索引二次取值:

loglike = []
# 直接用迭代得到的行对象参与计算
for row in X_test:
    p = np.sum(np.multiply(row, np.log(posprob)) + np.multiply((1-row), np.log(1-posprob)))
    loglike.append(p)
print(loglike)

对应的打印循环修改为:

for row in X:
    print(row)
补充说明

你看到的其他同类问题的写法,大概率是循环遍历的是range(len(矩阵))的索引范围,或是迭代的对象本身就是提前整理好的整数索引数组,和你直接迭代矩阵的写法逻辑并不一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:36:03