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

Python中如何按要求压缩一维与二维Numpy数组?

解决方案

要实现你期望的配对方式,核心是遍历二维数组的每一行,将该行的每个元素与一维数组对应位置的元素配对,而不是把一维数组的元素和二维数组的整行配对。这里用列表推导式就能轻松实现:

import numpy as np

arr2D = [[5.88964708e-02, -2.38142395e-01, -4.95821417e-01, -7.07269274e-01], [0.53363666, 0.1654723 , -0.16439857, -0.44880487]]
arr2D = np.asarray(arr2D)
arr1D = np.arange(7, 8.5+0.5, 0.5)
arr1D = np.asarray(arr1D)

# 生成期望的配对结果
res = [list(zip(arr1D, row)) for row in arr2D]

# 按你期望的格式打印
for sublist in res:
    print([sublist])

运行这段代码后,输出会和你期望的完全一致:

[[(7.0, 0.0588964708), (7.5, -0.238142395), (8.0, -0.495821417), (8.5, -0.707269274)]]
[[(7.0, 0.53363666), (7.5, 0.1654723), (8.0, -0.16439857), (8.5, -0.44880487)]]

为什么原来的代码不符合预期?

你原来的np.array(list(zip(arr1D, arr2D)))逻辑是把arr1D的每个元素和arr2D的整行做配对:

  • arr1D有4个元素(7.0,7.5,8.0,8.5),arr2D有2行,所以zip会以最短的序列(也就是arr2D的2行)为准,只生成2组配对:(7.0, arr2D第一行)、(7.5, arr2D第二行),这就导致了之前的输出结果。

而我们需要的是对arr2D的每一行,都和整个arr1D做元素级的配对,所以用[list(zip(arr1D, row)) for row in arr2D]遍历每一行,再逐个配对,就能得到你要的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:32:37