簡體   English   中英

將數組添加到numpy數組

[英]Add arrays to the numpy array

我嘗試將新創建的數組添加到其他numpy數組,但是我做錯了什么。 我想要的是向已創建的數組中添加多個數組,例如numpy.array([0, 1, 2, 3]) ,這樣我就可以得到以下內容:

x = numpy.array([])

for i in np.arange(5):
    y = numpy.array([0, 1, 2, 3])
    x = np.append(x, y)

result:
x = [0, 1, 2, 3],
    [0, 1, 2, 3],
    [0, 1, 2, 3],
    [0, 1, 2, 3],
    [0, 1, 2, 3]

但是,通過上面顯示的循環,我得到了:

x = [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]

append添加到數組的末尾。 由於x僅具有一維(其形狀為(0,)開頭),因此它只能以您觀察的方式增長。

通常,這不是用於逐步構建多維數組的正確工具-您可以將append添加到特定的訪問權限(以及堆棧數組),但是需要確保兩個數組的形狀相同且相同沿該軸的尺寸。 最重要的是,您要附加到的數組每次都必須復制。

生成所需數組的更簡潔的方法是使用np.tile代替:

>>> np.tile([1, 2, 3, 4, 5], (5, 1)) # (5,1) means 5/1 copies along axis 0/1
array([[1, 2, 3, 4, 5],
       [1, 2, 3, 4, 5],
       [1, 2, 3, 4, 5],
       [1, 2, 3, 4, 5],
       [1, 2, 3, 4, 5]])

嘗試這個:

x = []
for i in range(5):
    y = numpy.array([0, 1, 2, 3])
    x.append(y)

x = numpy.array(x)

要么:

N = 5
x = numpy.zeros((N, 4))

for i in range(N):
     x[i] = numpy.array([0, 1, 2, 3])

在這里,我避免在循環內使用numpy.appendnumpy.vstack ,因為它可能很慢。 每次調用numpy.appendnumpy.vstack都會創建一個空數組,並將xy復制到新的空數組中。 如果使用列表來保存數組的行直到循環結束,則數組最后只被復制一次。

如果以上兩種方法都不適合您,則可以執行以下操作(但是速度會變慢):

x = numpy.zeros((0, 4))

for i in range(5):
     y = numpy.array([0, 1, 2, 3])
     x = numpy.vstack(x, y)

暫無
暫無

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

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