有什么区别:
import numpy as np
A = np.zeros((3,))
和
import numpy as np
B = np.zeros((1,3))
感谢您的回答!
答案 0 :(得分: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
答案 1 :(得分:2)
第一个创建1D numpy.array
零:
>>> import numpy as np
>>> A = np.zeros((3,))
>>> A
array([ 0., 0., 0.])
>>> A[0]
0.0
>>>
第二个创建一个包含零的1行和3列的2D numpy.array
:
>>> import numpy as np
>>> B = np.zeros((1,3))
>>> B
array([[ 0., 0., 0.]])
>>> B[0]
array([ 0., 0., 0.])
>>>
如果您需要更多详细信息,请参阅numpy.zeros
以及numpy.array
上的参考文献。
答案 2 :(得分:1)
A是一个包含三个元素的一维数组。
B是一个二维数组,有一行三列。
你也可以使用C = np.zeros((3,1))
来创建一个包含三行一列的二维数组。
A,B和C具有相同的元素 - 不同之处在于它们将在以后的调用中如何解释。例如,一些numpy调用在特定维度上运行,或者可以被告知在特定维度上运行。例如总和:
>> np.sum(A, 0)
3.0
>> np.sum(B, 0)
array([ 1., 1., 1.])
它们与矩阵/张量操作(如dot
)以及hstack
和vstack
等操作也有不同的行为。
如果您要使用的是矢量,表单A通常会按照您的意愿执行。额外的“单身”尺寸(即尺寸为1的尺寸)只是你必须追踪的额外缺点。但是,如果需要与2d数组进行交互,则可能需要区分行向量和列向量。在这种情况下,表格B和C将很有用。