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

给numpy数组每行末尾追加零触发TypeError该如何解决

报错原因

np.concatenate 第一个入参要求是所有待拼接数组组成的序列(列表/元组),你直接将两个数组作为第1、第2个独立参数传入,第二个参数padding会被函数识别为指定拼接维度的axis参数,而axis仅支持传入整数,因此触发类型错误。
另外你当前的循环写法也存在两个问题:

  • 循环中取出的m1是原数组行的浅拷贝,直接修改m1不会改变原数组m的内容
  • 没有存储每一行的处理结果,无法最终合并得到完整数组
修正方案

方案1:调整原有循环写法

import numpy as np
v = 3
c = 3
l = 50
m = (np.random.rand(c, l) > 0.5) * 1
res = []
for m1 in m:
    padding = np.zeros(v, dtype=int)
    # 待拼接数组放在序列中传入
    m1_padded = np.concatenate([m1, padding])
    res.append(m1_padded)
# 合并所有处理后的行得到最终数组
m = np.array(res)

方案2:更高效的向量化写法(无需循环,推荐)

直接对整个数组做拼接,一行即可完成操作,性能远高于循环写法:

import numpy as np
v = 3
c = 3
l = 50
m = (np.random.rand(c, l) > 0.5) * 1
# 直接在水平方向拼接原数组和c行v列的全零数组
m = np.hstack([m, np.zeros((c, v), dtype=int)])

也可以用np.pad实现相同效果:

m = np.pad(m, pad_width=((0, 0), (0, v)), mode='constant', constant_values=0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:57:03