2015-03-02 64 views
0

我試圖使用numpy(和numpy)使用cutoffs中的邊來分割矢量y。將yg定義爲列向量,但將a作爲行向量返回。運行g += a.transpose()通過引入100x100陣列生成形狀一致性錯誤(複製如下)。必須有一個更加優雅的方式來完成這個任務。謝謝。將矢量值分配給numpy中的段

y = np.random.uniform(0,1,100) 
cutoffs = np.random.uniform(0,1,3) 
cutoffs.sort() 
g = np.zeros(y.size) 
for c in np.hstack([ cutoffs , 1. ]): 
    a = np.array([ y < c ]) 
    g += a.transpose() 


Traceback (most recent call last): 
    File "<stdin>", line 3, in <module> 
ValueError: non-broadcastable output operand with shape (100,) doesn't match the broadcast shape (100,100) 
+0

你到底要完成什麼? ...關於錯誤,您需要修改代碼如下... – plonser 2015-03-02 17:24:34

+0

感謝您的答案。目標是將段分配給'y',然後'將'函數映射到這些段的每一個,類似於R中的'tapply()'。 – user2105469 2015-03-02 18:15:59

回答

1

使用

a = (y < c).reshape(-1) 
g += a