2017-07-19 58 views
2

我的問題很簡單:什麼是最有效的(首選)方法在Python中創建一個數組,並逐列填充值?大多數Pythonic(高效率)方法來創建數組來填充它的值

進入我腦海的第一件事就是創建數組空數組(或填充零的數組)並逐步根據列號填充它。

import random 
import numpy as np 

values = np.zeros([10, 20]) 
# or values = np.empty([10,20]) 
for i in range(len(values.T)): 
    if i == 0: 
     values[:,i] = 1 
    elif i < 10: 
     values[:,i] = random.sample(range(1, 100), 10) 
    else: 
     values[:,i] = values[:,i] - values[:,i - 1] * i 

編輯:我所用填充柱並不重要,重要這裏最efficent辦法做到這一點。

+0

那麼這顯然取決於你想如何填充矩陣。在這裏,你可以用較少的numpy調用來做到這一點。 –

+0

我想按欄填寫它,因爲一些計算(如示例中所示)取決於前一列的值。 –

+1

但是,這些並不是真的依賴於:第一行由多個組成。接下來的10箇中的9個,最後它將在-10和10之間開始交替。 –

回答

1

你可以使用調整大小:

values = np.zeros([20]) 

for i in range(len(values)): 
    if i == 0: 
     values[i] = 1 
    elif i < 10: 
     values[i] = random.sample(range(1, 100), 1) 
    else: 
     values[i] = values[i] - values[i - 1] * i 

values = np.resize(values, [10, 20]) 

這是有效的,因爲它主要是適用於小的陣列,定義每個列,然後,以創建更大的陣列執行只有一個操作。

+0

你說的值是逐列而不是逐行的? –

相關問題