我想創建一個數組像下面numpy的數組:創建具有不同的步驟
# 0 | 4 | 8 | 16 | 32
其中,除了第一每個元素,是前一個的兩倍。 我可以通過迭代等來創建這個更小的對象。
但是,由於Python提供了很多單線程功能,我想知道是否有一個允許我這樣做。
我想創建一個數組像下面numpy的數組:創建具有不同的步驟
# 0 | 4 | 8 | 16 | 32
其中,除了第一每個元素,是前一個的兩倍。 我可以通過迭代等來創建這個更小的對象。
但是,由於Python提供了很多單線程功能,我想知道是否有一個允許我這樣做。
可能是一條線,但是這是比較明確的:
x = np.multiply.accumulate(np.ones(10)*2)
x[0] = 0
OR
x = 2**np.arange(1,10)
x[0] = 0
import numpy as np
你可以使用列表理解(在這種情況下2^n
)來評估你的冪函數,然後從中生成一個numpy.array
。
>>> np.array([0] + [2**i for i in range(2, 10)])
array([ 0, 4, 8, 16, 32, 64, 128, 256, 512])
稍作解釋會很好! – gsamaras 2014-10-07 15:35:38
您可以使用numpy.logspace
獲取對數間隔範圍。使用base=N
關鍵字參數設定指數的基礎:我喜歡這種方法
In [27]: np.logspace(0, 10, 11, base=2).astype(int)
Out[27]: array([ 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024])
因爲「LOGSPACE」函數的名稱清楚地表明,我將與日誌範圍(而不是線性)間距。
我喜歡使用'arange'和指數,明確發生了什麼。 – lmjohns3 2014-10-07 15:35:38
或者更緊湊:'np.cumprod(np.full((5,),2))' – hpaulj 2014-10-07 20:07:23