一维数组形状(长度,)对(长度,1)对(长度)

2024-10-03 17:16:03 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用numpy.shape()检查数组的形状时,有时会得到(length,1),有时会得到(length,)。看起来不同的是列向量和行向量。。。但这似乎并没有改变数组本身的任何内容[除了当我传递一个具有(length,1)形状的数组时,一些函数会抱怨]。

这两者有什么区别?
为什么形状不只是(length)


Tags: 函数numpy内容数组向量length形状shape
3条回答

关键是向量可以被看作

  • 矢量
  • 只有一列的矩阵
  • 一个三维数组,其中第二和第三维度的长度为1
  • 。。。

可以使用[:, np.newaxis]语法添加维度,也可以使用np.squeeze删除维度:

>>> xs = np.array([1, 2, 3, 4, 5])
>>> xs.shape
(5,)
>>> xs[:, np.newaxis].shape  # a matrix with only one column
(5, 1)
>>> xs[np.newaxis, :].shape  # a matrix with only one row
(1, 5)
>>> xs[:, np.newaxis, np.newaxis].shape  # a 3 dimensional array
(5, 1, 1)
>>> np.squeeze(xs[:, np.newaxis, np.newaxis]).shape
(5,)

(length,)数组是一个数组,其中每个元素都是一个数字,并且数组中有length元素。(length,1)数组是一个也有length元素的数组,但是每个元素本身是一个有单个元素的数组。例如,下面使用length=3。

>>> import numpy as np
>>> a = np.array( [[1],[2],[3]] )
>>> a.shape
>>> (3, 1)
>>> b = np.array( [1,2,3] )
>>> b.shape
>>> (3,)

在Python中,(length,)是一个元组,有一个1项。(length)只是数字周围的括号。

numpy中,数组可以有任意数量的维,0、1、2等。您正在询问1维和2维对象之间的区别。(length,1)是一个2项元组,给你二维数组的维数。

如果你习惯于使用MATLAB,你可能会被这样一个事实弄糊涂:所有数组都是二维或更大的。

相关问题 更多 >