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

使用嵌套for循环实现方阵与行数组相乘并解决numpy报错问题

报错原因
  1. 你传入的row_array是一维numpy数组,x[0]取到的是单个numpy.int64类型的数值,没有len()属性,调用len(x[0])直接触发报错。
  2. 原代码写的是三层循环的矩阵乘矩阵逻辑,不符合矩阵乘向量的计算要求,且输出数组维度设置错误,矩阵乘向量的结果是一维向量,不需要创建和方阵同维度的二维数组。
修复后代码(满足两层嵌套for循环要求)
import numpy as np

def matvec_row_variant_scalar(A,x):
    n = len(A)
    # 矩阵乘向量输出为长度n的一维数组
    product_array = np.zeros(n, dtype=int)
    # 第一层遍历矩阵的行
    for i in range(n):
        current_sum = 0
        # 第二层遍历行元素和向量的对应位置,累加计算点积
        for k in range(n):
            current_sum += A[i][k] * x[k]
        product_array[i] = current_sum
    return product_array

# 测试数组
square_array = np.array([[1,2],[3,4]])
row_array = np.array([2,2])
print(matvec_row_variant_scalar(square_array,row_array))

运行输出:[6 14]

核心修改点
  • 调整输出数组维度:将二维方阵输出改为长度和方阵阶数一致的一维数组,符合矩阵向量乘法的结果形态
  • 简化为两层循环:删除多余的第三层循环,直接通过两层循环完成矩阵行与向量的点积计算,匹配需求
  • 兼容一维向量输入:不再尝试获取x[0]的长度,直接用向量本身的长度作为内层循环遍历上限,彻底解决len()调用报错问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:09:00