2016-01-21 38 views
1

我有一个numpy的数组:的Python:numpy的形状混乱

>>> type(myArray1) 
Out[14]: numpy.ndarray 

>>> myArray1.shape 
Out[13]: (500,) 

我有另一个数组:

>>> type(myArray2) 
Out[14]: numpy.ndarray 

>>> myArray2.shape 
Out[13]: (500,1) 

(1)是什么(500,)和之间的差(500,1 )?

(2)如何更改(500)到(500,1)

回答

4

(1)(500,)和(500,1)之间的区别在于,第一个是一个形状一维数组,而第二个是二维数组的长度为1的二维数组的形状。这可能会引起混淆,因为其他语言没有做出区分。

(2)您可以使用np.reshape来做到这一点: myArray1.reshape(-1,1)。 您还可以使用np.expand_dims向您的数组添加维度:np.expand_dims(myArray1, axis = 1)

+0

另请注意,与'reshape(-1,1)'做同样的事情的一个非常普通的习语是'my_array [:, None]'或者更可读的'my_array [:, np.newaxis]'。 –

4

(500,)和(500,1)之间的差异是维数(第一个是“完全平坦”)。 你可以自己尝试一下:

import numpy as np 
arr = np.array([i for i in range(250)]) 
arr.shape 
# (250,) 
new_arr = np.array([i for i in range(250)], ndmin=2).T 
new_arr.shape 
# (250, 1) 
# You can also reshape it directly: 
arr.shape = (250, 1) 
# And look the result: 
arr 
# array([[ 0], 
# [ 1], 
# [ 2], 
# [ 3], 
# [ 4], 
# (...) 

尝试也扭转形状,像(1,500),而不是(500:1)。