有沒有辦法動態擴展的陣列SciPy的動態擴展一個SciPy的陣列
from scipy import sci
time = sci.zeros((n,1), 'double')
我們可以增加time
數組的大小之後呢?
有沒有辦法動態擴展的陣列SciPy的動態擴展一個SciPy的陣列
from scipy import sci
time = sci.zeros((n,1), 'double')
我們可以增加time
數組的大小之後呢?
可以使用resize
方法擴展數組,但對於大型數組可能會很慢,所以請儘量避免使用*。
例如:
import scipy as sci
n=3
time = sci.zeros((n,1), 'double')
print(time)
# [[ 0.]
# [ 0.]
# [ 0.]]
time.resize((n+1,2))
print(time)
# [[ 0. 0.]
# [ 0. 0.]
# [ 0. 0.]
# [ 0. 0.]]
*相反,找出你從一開始的數組多大需要,並分配該形狀time
只有一次。一般來說,過度分配比調整大小要快。
生成的time
數組只是一個Numpy Array,您可以使用標準的Numpy方法來操作它們,例如numpy#insert,它將返回一個修改後的數組,其中插入了新的元素。實例的使用,從NumPy的文檔(這裏np
是短期的numpy
):
>>> a = np.array([[1, 1], [2, 2], [3, 3]])
>>> a
array([[1, 1],
[2, 2],
[3, 3]])
>>> np.insert(a, 1, 5)
array([1, 5, 1, 2, 2, 3, 3])
>>> np.insert(a, 1, 5, axis=1)
array([[1, 5, 1],
[2, 5, 2],
[3, 5, 3]])
此外,numpy#insert
比numpy#resize
快:
>>> timeit np.insert(time, 1, 1, 1)
100000 loops, best of 3: 16.7 us per loop
>>> timeit np.resize(time, (20,1))
10000 loops, best of 3: 27.1 us per loop
SCI不規範,解釋它 –