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

如何高效简化从(m,k)型NumPy数组生成(1,n)型数组的代码?

优化方案

针对你需要从(5,n)数组A构建(1,20)数组B的需求,可以利用NumPy的矢量化操作简化代码,避免逐段赋值:

方法1:切片+重塑(最简洁)

直接提取A每一行的前4个元素,然后重塑成目标形状:

import numpy as np

A = np.array(
  [[4, 2, 1, 4, 0, 1, 3, 2, 4, 4],
   [4, 2, 0, 3, 1, 1, 4, 2, 2, 1],
   [3, 2, 3, 2, 0, 3, 4, 1, 4, 3],
   [1, 1, 1, 3, 1, 1, 3, 0, 2, 2],
   [3, 3, 4, 1, 4, 1, 0, 1, 0, 2]])

B = A[:, :4].reshape(1, -1)

A[:, :4]提取所有行的前4个元素,得到一个(5,4)的数组;reshape(1, -1)自动计算列数,将其转换为(1,20)的二维数组。

方法2:扁平化+升维

先扁平化提取后的数组,再通过索引增加维度:

B = A[:, :4].flatten()[None, :]

flatten()将(5,4)数组转为一维数组,[None, :]将其升为(1,20)的二维数组。

方法3:数组拼接

用concatenate拼接每一行的前4个元素:

B = np.concatenate(A[:, :4], axis=0)[None, :]

np.concatenate(A[:, :4], axis=0)将5个(4,)的一维数组拼接成(20,)的数组,再升维为(1,20)。

验证结果

以上方法得到的B数组均与你原代码的输出一致:

array([[4., 2., 1., 4., 4., 2., 0., 3., 3., 2., 3., 2., 1., 1., 1., 3.,
        3., 3., 4., 1.]])

这些方案无需编写重复的赋值语句,且NumPy的内置操作是矢量化执行的,在处理大型数组时比逐段赋值效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:05:22