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

如何用Python循环按指定区间填充NumPy矩阵?

用for循环正确填充NumPy矩阵切片的方法

你当前的代码问题在于每次循环的起始索引计算错误(0*i会始终从第0列开始赋值,导致后续迭代覆盖前面的内容),要实现依次填充0:2、2:4、4:6、6:8这些切片,核心是生成0、2、4、6这样的起始索引序列,下面提供几种可行方案:

方案1:直接生成起始索引序列

单独构造起始索引的序列,再和i、j的序列打包循环:

import numpy as np

matrix = np.zeros((1,8))
# 生成0、2、4、6的起始索引
start_indices = range(0, 8, 2)
for i, j, start in zip(range(2,6), range(1,5), start_indices):
    matrix[0, start:start+2] = [i*2, j*2]
print(matrix)

方案2:利用循环计数推导起始索引

通过enumerate获取循环的次数,用次数计算起始索引(每次步进2):

import numpy as np

matrix = np.zeros((1,8))
for idx, (i, j) in enumerate(zip(range(2,6), range(1,5))):
    start = idx * 2
    matrix[0, start:start+2] = [i*2, j*2]
print(matrix)

方案3:用NumPy向量化操作替代循环(更高效)

如果不需要强制使用for循环,NumPy的向量化操作能更简洁高效地实现目标:

import numpy as np

i_arr = np.arange(2, 6)
j_arr = np.arange(1, 5)
# 将i*2和j*2交替排列后转为1行8列的矩阵
matrix = np.column_stack((i_arr*2, j_arr*2)).flatten()[np.newaxis, :]
print(matrix)

以上三种方案都能得到你预期的输出:

[[4. 2. 6. 4. 8. 6. 10. 8.]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:15:31