簡體   English   中英

numpy數組的numpy數組具有一維形狀

[英]Numpy array of numpy arrays has 1D shape

我有兩個數組(A和B)的numpy數組。 打印時它們看起來像這樣:

A:

[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) B.shape (8, 5)

問題1:為什么A.shape是一維的,我如何使其像B.shape一樣是B.shape 它們都是數組的數組,對不對?

問題2,可能與問題1有關:為什么打印A不會顯示對array()的調用,而打印B卻不顯示,為什么B的子array()的元素之間沒有逗號?

提前致謝。

A.dtypeO ,對象, B.dtypefloat

A是一維數組,其中包含對象,恰好是數組。 它們也可以是列表或“無”。

B是2d浮點數組。 索引B一行給出一個1d數組。

因此, A[0]B[0]看起來可以產生相同的事物,但是選擇過程不同。

嘗試np.concatenate(A)np.vstack(A) 然后,它們都將A視為數組列表,並以1d或2d形式將它們連接。

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

將3D列表轉換為3D NumPy數組比您所需要的要通用一些,但是會提供很多有用的信息。

將列表的numpy數組轉換為numpy數組

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

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]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM