2016-10-29 130 views
1

我有兩個數組的numpy數組(A和B)。他們是這個樣子打印時:numpy數組的numpy數組有一維形狀

答:

[array([0, 0, 0]) array([0, 0, 0]) array([1, 0, 0]) array([0, 0, 0]) 
array([0, 0, 0]) array([0, 0, 0]) array([0, 0, 0]) array([0, 0, 0]) 
array([0, 0, 0]) array([0, 0, 0]) array([0, 0, 1]) array([0, 0, 0]) 
array([1, 0, 0]) array([0, 0, 1]) array([0, 0, 0]) array([0, 0, 0]) 
array([0, 0, 0]) array([1, 0, 0]) array([0, 0, 1]) array([0, 0, 0])] 

B:

[[ 4.302135e-01 4.320091e-01 4.302135e-01 4.302135e-01 
    1.172584e+08] 
[ 4.097128e-01 4.097128e-01 4.077675e-01 4.077675e-01 
    4.397120e+07] 
[ 3.796353e-01 3.796353e-01 3.778396e-01 3.778396e-01 
    2.643200e+07] 
[ 3.871173e-01 3.890626e-01 3.871173e-01 3.871173e-01 
    2.161040e+07] 
[ 3.984899e-01 4.002856e-01 3.984899e-01 3.984899e-01 
    1.836240e+07] 
[ 4.227315e-01 4.246768e-01 4.227315e-01 4.227315e-01 
    1.215760e+07] 
[ 4.433817e-01 4.451774e-01 4.433817e-01 4.433817e-01 
    9.340800e+06] 
[ 4.620867e-01 4.638823e-01 4.620867e-01 4.620867e-01 
    1.173760e+07]] 

type(A)type(A[0])type(B)type(B[0])都是<class 'numpy.ndarray'>

然而,A.shape(20,),而B.shape(8, 5)

問題1:爲什麼A.shape是一維的,我怎樣才能使它像二維的B.shape?他們都是數組的數組,對嗎?

問題2,可能與Q1:爲什麼打印A顯示的array()的電話,而打印B不和爲什麼的B子陣中的元素沒有在它們之間,逗號?

在此先感謝。

+1

你是否看了'dtype'每個陣列的?一個是陣列數組,另一個是浮點數的二維數組。 – Evert

+0

這是我的問題 - 我如何將數組的數組轉換爲ints/float的二維數組? –

回答

2

A.dtypeO,object,B.dtypefloat

A是包含對象,這恰好是陣列一維數組。它們可以是列表或None(無)。

B是浮筒的2D陣列。索引B的一行給出了1d數組。

因此,A[0]B[0]可能會出現產生相同的事情,但選擇過程是不同的。

嘗試np.concatenate(A),或np.vstack(A)。這兩種方法都將A視爲數組列表,並在1或2d中加入它們。

將對象數組轉換爲常規會經常出現。

Converting a 3D List to a 3D NumPy array 是一個更普遍的,你需要什麼,但提供了很多有用的信息。

Convert a numpy array of lists to a numpy array

==================

In [28]: A=np.empty((5,),object) 
In [31]: A 
Out[31]: array([None, None, None, None, None], dtype=object) 
In [32]: for i in range(5):A[i]=np.zeros((3,),int) 
In [33]: A 
Out[33]: 
array([array([0, 0, 0]), array([0, 0, 0]), array([0, 0, 0]), 
     array([0, 0, 0]), array([0, 0, 0])], dtype=object) 
In [34]: print(A) 
[array([0, 0, 0]) array([0, 0, 0]) array([0, 0, 0]) array([0, 0, 0]) 
array([0, 0, 0])] 
In [35]: np.vstack(A) 
Out[35]: 
array([[0, 0, 0], 
     [0, 0, 0], 
     [0, 0, 0], 
     [0, 0, 0], 
     [0, 0, 0]]) 
+0

呵呵,我錯過了答案...謝謝! –