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

NumPy数组形状(10,1)与(10,)的差异及转换方法咨询

NumPy数组(10,1)与(10,)的区别及转换方法

核心区别

  • 维度差异:
    • (10,) 是一维数组,仅包含一个轴(轴0),存储10个独立元素。
    • (10,1) 是二维数组,包含两个轴(轴0和轴1),可看作10行1列的列向量结构。
  • 索引方式不同:
    • 一维数组arr_1d取第3个元素用arr_1d[2]。
    • 二维数组arr_2d取第3个元素需要arr_2d[2, 0]或arr_2d[2][0]。
  • 运算广播行为有别:
    一维数组(10,)可直接与同形状一维数组逐元素运算;而(10,1)数组与(10,)数组运算时会触发广播(将(10,)扩展为(10,1)),最终结果形状为(10,1)。

转换方法:将(10,1)转为(10,)

以下是几种实用方法,附代码示例:

1. squeeze()方法

移除数组中所有长度为1的轴:

import numpy as np
arr_2d = np.random.rand(10, 1)
arr_1d = arr_2d.squeeze()
print(arr_1d.shape)  # 输出 (10,)

2. 切片索引

直接提取所有行的第0列:

arr_1d = arr_2d[:, 0]
print(arr_1d.shape)  # 输出 (10,)

3. reshape()方法

通过重塑形状指定一维结构:

arr_1d = arr_2d.reshape(-1)  # -1表示自动计算维度长度
print(arr_1d.shape)  # 输出 (10,)
# 也可直接指定长度:arr_2d.reshape(10)

4. ravel()方法

将数组展平为一维(返回视图或副本,取决于原数组存储连续性):

arr_1d = arr_2d.ravel()
print(arr_1d.shape)  # 输出 (10,)

5. flatten()方法

返回数组的一维副本(无论原数组是否连续):

arr_1d = arr_2d.flatten()
print(arr_1d.shape)  # 输出 (10,)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:42:14