簡體   English   中英

numpy.array訪問

[英]numpy.array access

我有一個二維的numpy數組visrec 如果我做

print visrec[0,:]

我得到以下輸出:

[  a1   a2   a3   a4  a5   a6]

其中a1, a2,..dtype=float64

更清楚地, visrec是存儲在numpy.array對象中的1x6矩陣。 它最初是使用以下命令創建的:

visrec=numpy.array(numpy.zeros((1,6)))

在一個循環中,我正在修改visrec並將修改記錄存儲在列表中。 我基本上是將每個修改附加到列表rec_history=[] 我使用以下命令:

rec_history.append(visrec[0,:])

然后,為了對其進行測試,我只想使用以下命令打印rec_history的第一個元素:

print rec_history[0]

輸出格式如下:

[ a1   a2  a3   a4   a5   a6]

到目前為止,一切都與我預期的一樣。 但是,如果我嘗試打印rec_history多個元素, rec_history得到意外的輸出。 我發出以下命令:

print rec_history[0:3] 

並獲得以下輸出:

[array([ a1,  a2,  a3,  a4,  a5 ,
        a6]), array([  b1,   b2,   b3,
         b4,   b5,   b6]), array([  c1,   c2,   c3,
         c4,   c5,   c6])]

這正常嗎? 我是否實際上將數組對象存儲在我的記錄列表中。 如果是這種情況,為什么僅打印列表中的一個元素就不能得到另一種輸出? 這與功能print嗎? 我不想存儲數組對象,我想將數字列表存儲在記錄列表中。 我怎樣才能做到這一點? 我知道matlab,但是我想這對我沒有幫助。

您正在存儲原始數組的切片,並且由於您從rec_history[0:3]切片中獲得了多個數組,因此我假設您已將其追加了至少3次。

如果要獲取rec_history的第一項的前三項,則需要執行以下操作:

rec_history[0][:3]

如果由於某種原因不想在rec_history中使用數組,則可以將附加行​​更改為:

rec_history.append(list(visrec[0,:]))

如果您打算更改visrec並希望查看它在以前的狀態下的visrec ,那將是很好的選擇,因為僅像您所做的那樣附加數組切片只會創建對該數組那部分的引用。 因此,如果您用代碼更改數組,它也會更改rec_history的內容。

暫無
暫無

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

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