2017-03-06 15 views
1

我想對數組做linspace。就像下面:我如何向量化ninspace中的linspace

a = np.array([2, 4, 6]) 
b = vectorize(np.array)(0, a, 5) 

我想的東西回來,看起來像:

b = [[0, 0.5, 1, 1.5, 2] 
    [0, 1, 2, 3, 4] 
    [0, 1.5, 3, 4.5, 6]] 

這是我的代碼:

import numpy as np 
a = np.arange(1001) 
c = np.vectorize(np.linspace)(0, a, 101) 
print(c) 

結果表明:ValueError異常:設置一個數組元素與一個序列。 有沒有辦法做到這一點在numpy沒有for循環?

回答

2

建立你自己:

def vlinspace(a, b, N, endpoint=True): 
    a, b = np.asanyarray(a), np.asanyarray(b) 
    return a[..., None] + (b-a)[..., None]/(N-endpoint) * np.arange(N) 
+0

感謝。你爲什麼使用np.asanyarray而不是np.array? – jiangniao

+0

@jiangniao它不會強制複製,它只能保留'ndarray'子類,所以它的侵入性最小。 –