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

如何为NumPy生成的全零数组的指定元素赋值为arrival_time数值

numpy全零数组指定位置赋值问题修复方案

你现有代码存在4个核心错误导致赋值失败:

  • 初始化AR数组时参数j=0,生成的是形状为(1, 0)的空数组,没有可写入的元素位置,且numpy数组默认不会自动扩容,后续j自增也无法修改数组已固定的长度
  • numpy数组的元素访问/赋值需使用方括号[],你写的AR(1,j)为函数调用语法,运行会直接报错
  • Python和numpy的索引从0开始计数,你用1作为起始索引会触发数组越界报错
  • 所有初始化逻辑写在循环内部,每次遍历lam_vec的元素都会重置j、AR等变量,之前的赋值结果会被完全覆盖

推荐实现方式

如果无法提前确定最终AR数组的长度,优先用列表暂存数据,最后统一转numpy数组,避免频繁扩容数组的性能损耗:

import numpy as np

# 此处替换为你自己的lam_vec取值
lam_vec = [1, 2, 3, 0.5]
ar_temp = []
t = 0

for lamda in lam_vec:
    arrival_time = t + np.random.exponential(1 / lamda)
    ar_temp.append(arrival_time)
    t = arrival_time

# 转换为形状为(1, n)的数组,也可以根据你的需求提前填充0后替换指定位置
AR = np.array(ar_temp).reshape(1, -1)

如果明确知道AR数组的总长度,可以直接预分配全零数组后按索引赋值:

import numpy as np

lam_vec = [1, 2, 3, 0.5]
# 预分配和lam_vec长度一致的全零数组
AR = np.zeros((1, len(lam_vec)))
t = 0

for idx, lamda in enumerate(lam_vec):
    arrival_time = t + np.random.exponential(1 / lamda)
    # 用方括号按索引赋值
    AR[0, idx] = arrival_time
    t = arrival_time

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:57:03