[英]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.append
和numpy.vstack
,因為它可能很慢。 每次調用numpy.append
或numpy.vstack
都會創建一個空數組,並將x
和y
復制到新的空數組中。 如果使用列表來保存數組的行直到循環結束,則數組最后只被復制一次。
如果以上兩種方法都不適合您,則可以執行以下操作(但是速度會變慢):
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.