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

如何将for循环输出的int值存入(n,1)格式的NumPy数组?

可行实现方案

方案1:最小改动适配你现有写法

你已经提前初始化了形状为(n,1)的目标数组,不需要调用np.insert/np.append,直接按索引赋值即可,这两个方法会新增数组元素,反而会打乱你预设的数组形状:

distmat = np.zeros((len(CoordNodesRad[:,0]), 1), int)
lat = CoordNodesRad[:,0]
lng = CoordNodesRad[:,1]
for i in range(len(CoordNodesRad[:,0])):
    dist = distanceGPS(depot[0], depot[1], lat[i], lng[i])
    # 直接给对应位置赋值即可实现 array[i][0] 存储第i次的dist值
    distmat[i, 0] = int(dist)
print(distmat)

方案2:更高效的NumPy向量化写法(无需for循环)

如果你的distanceGPS函数支持数组参数批量计算,可以完全省去循环,运行效率更高:

lat = CoordNodesRad[:,0]
lng = CoordNodesRad[:,1]
# 批量计算所有点的距离
all_dist = distanceGPS(depot[0], depot[1], lat, lng).astype(int)
# 直接转换为 (n,1) 形状的数组
distmat = all_dist.reshape((-1, 1))

你原有代码报错的原因

  • np.insert会在指定位置插入新元素,会让数组总长度增加,你已经初始化了正好长度的数组,调用后会把数组变为1维、长度超出预期
  • np.append默认会把输入数组摊平为1维再追加元素,不指定正确的axis参数也无法得到你要的(n,1)形状

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:15:01