0

有什么区别:

import numpy as np
A = np.zeros((3,))

import numpy as np
B = np.zeros((1,3))

感谢您的回答!

4

3 回答 3

2

希望这些能说明实践中的差异。

>>> A = np.zeros((3,))
>>> B = np.zeros((1,3))
>>> A #no column, just 1D
array([ 0.,  0.,  0.])
>>> B #has one column
array([[ 0.,  0.,  0.]])
>>> A.shape
(3,)
>>> B.shape
(1, 3)
>>> A[1]
0.0
>>> B[1] #can't do this, it will take the 2nd column, but there is only one column.

Traceback (most recent call last):
  File "<pyshell#89>", line 1, in <module>
    B[1]
IndexError: index 1 is out of bounds for axis 0 with size 1
>>> B[0] #But you can take the 1st column
array([ 0.,  0.,  0.])
>>> B[:,1] #take the 2nd cell, for each column
array([ 0.])
>>> B[0,1] #how to get the same result as A[1]? take the 2nd cell of the 1st col.
0.0
于 2013-10-22T16:08:59.880 回答
2

第一个创建一维numpy.array零:

>>> import numpy as np
>>> A = np.zeros((3,))
>>> A
array([ 0.,  0.,  0.])
>>> A[0]
0.0
>>>

第二个创建一个 2Dnumpy.array的 1 行和 3 列,用零填充:

>>> import numpy as np
>>> B = np.zeros((1,3))
>>> B
array([[ 0.,  0.,  0.]])
>>> B[0]
array([ 0.,  0.,  0.])
>>>

如果您想了解更多详细信息,这里有一个参考numpy.zeros和一个。numpy.array

于 2013-10-22T16:10:08.970 回答
1

A 是具有三个元素的一维数组。

B 是一行三列的二维数组。

您也可以使用C = np.zeros((3,1))which 创建一个三行一列的二维数组。

A、B 和 C 具有相同的元素——不同之处在于它们将如何被以后的调用解释。例如,一些 numpy 调用在特定维度上运行,或者可以被告知在特定维度上运行。例如总和:

>> np.sum(A, 0)
   3.0
>> np.sum(B, 0)
   array([ 1., 1., 1.])

dot它们对矩阵/张量运算(如,以及 和 )hstack也有不同的行为vstack

如果您要使用的只是向量,那么表格 A 通常会做您想做的事情。额外的“单一”维度(即大小为 1 的维度)只是您必须跟踪的额外内容。但是,如果您需要与二维数组交互,您可能必须区分行向量和列向量。在这种情况下,表格 B 和 C 将很有用。

于 2013-10-22T16:54:30.237 回答