簡體   English   中英

Python / Numpy:如何分配數組的結束+ 1元素,類似於在Matlab中完成的方式?

[英]Python/Numpy: How do you assign the end+1 element of an array similar to how it's done in Matlab?

例如,對於具有n個元素的一維數組,如果我想在Matlab中執行此操作,我可以這樣做:

A(結束+ 1)= 1

將值1賦給數組A的最后一個元素,現在長度為n + 1。

Python / Numpy中有相同的東西嗎?

您可以使用appendnumpy.append將值附加到數組/列表的append

# Python list
a = [1, 2, 3]
a.append(1)
# => [1, 2, 3, 1]

# Numpy array
import numpy as np
a = np.array([1, 2, 3])
a = np.append(a, 1)
# => [1, 2, 3, 1]

請注意,正如@BrenBarn所指出的那樣, numpy.append方法在每次執行時都會創建一個全新的數組,這會使其效率低下。

我敢打賭,Matlab / Octave操作也是如此 - 創建一個新對象。 但我不知道是否有類似Python id(a)的東西來驗證。

Octave中的原始時序測試支持這一點 - 通過追加創建一個大型數組比通過整個數組步進更慢。 兩者都比直接分配慢得多,如A=1:N

octave:36> t=time; N=1000000; A=[]; A(N)=1; for i=1:N A(i)=i; end; t-time
ans = -4.0374
octave:37> t=time; N=1000000; A=[]; for i=1:N A(end+1)=i; end; t-time
ans = -15.218

使用(end+1)擴展數組在Javascript中比Matlab更具慣用性。

暫無
暫無

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

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