What does (n,) mean in the context of numpy and vectors?
<p>I've tried searching StackOverflow, googling, and even using symbolhound to do character searches, but was unable to find an answer. Specifically, I'm confused about Ch. 1 of Nielsen's <em>Neural Networks and Deep Learning</em>, where he says "It is assumed that the input <code>a</code> is an <code>(n, 1) Numpy ndarray</code>, not a <code>(n,) vector</code>."</p>

<p>At first I thought <code>(n,)</code> referred to the orientation of the array - so it might refer to a one-column vector as opposed to a vector with only one row. But then I don't see why we need <code>(n,)</code> and <code>(n, 1)</code> both - they seem to say the same thing. I know I'm misunderstanding something but am unsure.</p>

<p>For reference <code>a</code> refers to a vector of activations that will be input to a given layer of a neural network, before being transformed by the weights and biases to produce the output vector of activations for the next layer.</p>

<p>EDIT: This question equivocates between a "one-column vector" (there's no such thing) and a "one-column matrix" (does actually exist). Same for "one-row vector" and "one-row matrix". </p>

<p>A vector is only a list of numbers, or (equivalently) a list of scalar transformations on the basis vectors of a vector space. A vector might <em>look</em> like a matrix when we write it out, if it only has one row (or one column). Confusingly, we will sometimes refer to a "vector of activations" but actually mean "a single-row matrix of activation values transposed so that it is a single-column."</p>

<p>Be aware that in neither case are we discussing a one-dimensional vector, which would be a vector defined by only one number (unless, trivially, n==1, in which case the concept of a "column" or "row" distinction would be meaningless).</p>

<p><code>(n,)</code> is a tuple of length 1, whose only element is <code>n</code>. (The syntax isn't <code>(n)</code> because that's just <code>n</code> instead of making a tuple.)</p>

<p>If an array has shape <code>(n,)</code>, that means it's a 1-dimensional array with a length of <code>n</code> along its only dimension. It's not a row vector or a column vector; it doesn't have rows or columns. It's just a vector.</p>

python numpy machine-learning neural-network