擅长:python、mysql、java
<p>{cd1>数组中可以有不同的维数</p>
<p>典型的2d数组具有<code>(n,m)</code>(这是一个Python元组)。我们倾向于将其描述为有n行,m列。因此,<code>(n,1)</code>数组只有1列,<code>(1,m)</code>有1行。在</p>
<p>但是因为数组可能只有一维,所以有可能有一个形状<code>(n,)</code>(对于1元素元组的Python表示法:请参见<a href="https://wiki.python.org/moin/TupleSyntax" rel="nofollow noreferrer">here</a>了解更多信息)。在</p>
<p>出于许多目的,<code>(n,)</code>,<code>(1,n)</code>,<code>(n,1)</code>数组是等价的(也是<code>(1,n,1,1)</code>(4d))。它们都有<code>n</code>项,并且可以相互重塑。在</p>
<p>但有时额外的<code>1</code>维度很重要。(1,m)数组可以将(n,1)数组相乘生成(n,m)数组。(n,1)数组可以像(n,m)一样被索引,有2个索引,<code>x[:,0]</code>其中A(n,)只接受<code>x[0]</code>。在</p>
<p>MATLAB矩阵总是2d(或更高)。因此,从MATLAB中传递思想的人倾向于期望二维。有一个<code>np.matrix</code>子类应该模仿它。在</p>
<p>对于numpy程序员来说,向量、行向量、列向量、矩阵之间的区别是松散的,相对来说并不重要。或者该用法是从应用程序而不是从<code>numpy</code>本身派生的。我想这就是这本网络书所发生的事情——符号和期望来自<code>numpy</code>之外。在</p>
<p>有关如何根据<code>ndarrays</code>中存储的数据解释形状,请参见此答案。它还提供了关于如何使用<code>.reshape</code>:<a href="https://stackoverflow.com/a/22074424/3277902">https://stackoverflow.com/a/22074424/3277902</a>的见解</p>