2016-06-06 6 views
5

में एक तत्व के अलावा सभी का चयन करें, मैं जानना चाहता हूं कि जूलिया सरणी में एक तत्व (इंडेक्स द्वारा) सभी को चुनना संभव है या नहीं।जुलिआ सरणी/मैट्रिक्स

एक मैट्रिक्स में किसी विशेष पंक्ति का चयन नहीं करने के क्रम में आर भाषा में उदाहरण के लिए एक लिखते थे:

a = matrix(1:9, 3, 3) 
a 
1 4 7 
2 5 8 
3 6 9 

और उसके बाद:

a[-2, ] 
1 4 7 
3 6 9 

अब मैं एक ही बात करना चाहते हैं जुलिआ में मैंने तार्किक ऑपरेटरों का उपयोग करने की कोशिश की, लेकिन मुझे एक विशेष इंडेक्स का चयन करने के लिए कोई रास्ता नहीं मिला। यहाँ मैं क्या करने की कोशिश की है:

a = rand(3,3) 
a[.!= 2, :] 
ERROR: syntax "!=" is not a unary operator 

या आर के रूप में:

a[-2, :] 

और कुछ अन्य विकल्प।

a[a .>= .5, :] 

या

a[[2,3], :] 

सेकंड और तीसरी पंक्ति का चयन करने के: क्या जूलिया में काम कर रहा है निम्नलिखित है। वैसे भी मैं वास्तव में जानना चाहता हूं कि जूलिया सरणी में किसी एक विशेष तत्व (उदाहरण के लिए पंक्ति) में से किसी एक को कैसे चुनना है।

उत्तर

7

यहाँ एक विकल्प है:

A = rand(3,3) 
B = A[1:end .!= 2,:] 

1:end पंक्ति सूचियों की एक पूरी सूची (आप भी 1:size(A,1) इस्तेमाल कर सकते हैं) और फिर .!= (. का संकेत तत्व के लिहाज से तुलना पर ध्यान दें) हो जाता है सूचकांकों के बराबर नहीं का चयन करता है 2.

आप इस तरह से स्तंभों का चयन करना चाहता है तो आप का प्रयोग करेंगे:

C = A[:, 1:end .!= 2] 

ध्यान दें कि end कीवर्ड स्वचालित रूप से पंक्ति, कॉलम या अन्य आयाम के अंतिम अनुक्रमणिका मान के बराबर होगा जिसका आप संदर्भ दे रहे हैं।

नोट: जवाब (endsize() के बजाय का उपयोग) टिप्पणी में @Matt बी ने सुझाव दिया सुधारों के अनुसार अपडेट।

+0

अच्छा जवाब! इससे पहले कि मैं और सवाल उठाने के लिए प्रश्न पूछने से पहले मैं थोड़ी देर इंतजार करूंगा। लेकिन आपका दृष्टिकोण वास्तव में अच्छा है। – Vincent

+1

इससे मेरा जीवन इतना आसान हो जाता है। अब मैं लूप के लिए बदसूरत नेस्टेड लिखने से बच सकता हूं। – Vincent

+2

और भी मजेदार: आप इस तरह 'एंड' एक्सप्रेशन का उपयोग कर सकते हैं: 'ए [1: एंड।! = 2,:] '। अर्थात्, यह वही है - पार्सर सिर्फ आपके लिए सही 'आकार' कॉल का पता लगाता है। –

संबंधित मुद्दे