2016-10-22 55 views
3

x-.y包括除y的單元格之外的所有項目
但是,如果我想要獲取所有屬於x和y單元格的項目,該怎麼辦?
我可以x-.y那麼交叉點呢?

x -.^:2 y 

實現這一目標,但它需要運行昂貴的操作兩次。 有更好的解決方案嗎?

+0

做'-.'兩次是很貴的。 '-.'非常有效。 – Eelvex

回答

4

e.在處理集合時通常很有用。

x e. y 

給出匹配的列表:

爲X返回1每個項目,如果它存在於 「設置」 Y 0否則。

1 2 3 4 e. 5 9 2 
0 1 0 0 

然後,

x (e. # [) y 

選擇那些在兩個列表中存在的那些元素。

1 2 3 4 (e. # [) 5 9 2 
2 
5 8 (e. # [) i.12 
5 8 
+2

' - 。^:2'似乎更有效率的方式。 – Eelvex

3

-.兩次在J.

效率低下是次要的(一個常數因子實現路口經典的方式 - 而且,在一般情況下,你不應該以J與效率問題的關心自己,除非他們超過2倍 - 當您遇到資源問題時,您通常需要關注1000或更多問題的因素)。

換句話說,如果([-.-.)-.^:2對你來說太慢,那麼-.對你來說也太慢了。 (這可能發生在底層實現效率低下的極大數據集上,最近版本的J已經完成了一些工作,以糾正這個問題。)

令人失望,或許但實用。