2015-12-27 8 views
5

मान लीजिए कि मेरे पास 20x100 numpy सरणी है। मैं 50 वें कहकर सभी कॉलम चुनना चाहता हूं। तो मैं इस धागे Extracting specific columns in numpy array का पालन कर रहा था लेकिन इससे मदद नहीं मिली। मैंनेnumpy सरणी में विशिष्ट कॉलम का चयन कैसे करें?

x=Z[:,[:49,51:]] 

का उपयोग करने का प्रयास किया लेकिन त्रुटि दे रही थी। आर में यह

x=Z[,c(1:49,51:100)] 

लेकिन पाइथन में नहीं पता लगाना आसान है। कृपया मदद करें। धन्यवाद

उत्तर

4

एक तरह से एक आर की तरह पाने के लिए यहां वाक्यविन्यास np.r_ का उपयोग करना होगा:

>>> Z = np.arange(2000).reshape(20, 100) 
>>> Z.shape 
(20, 100) 
>>> x = Z[:,np.r_[:49,50:100]] 
>>> x.shape 
(20, 99) 
>>> x[0,48:52] 
array([48, 50, 51, 52]) 

और हम देखते हैं कि 50 वें कॉलम (संख्या 4 9 के साथ) x से गायब है।

+0

शांत के लिए कर सकते हैं! पहले नहीं देखा था। * इच्छा * मैंने पहले देखा था! बहुत numpythonic। – uhoh

1

यह काम करेगा:

>>> a = np.arange(2000).reshape(20, 100) 
>>> b = a[:, np.arange(a.shape[1]) != 50] 
>>> b.shape 
(20, 99) 
1

आप बस 50 वीं स्तंभ np.delete() का उपयोग कर नष्ट कर सकते हैं:

A = np.delete(A, 50, 1) 

डेमो:

>>> import numpy as np 
>>> A = np.arange(100).reshape(25,4) 
>>> A 
array([[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7], 
     [ 8, 9, 10, 11], 
     [12, 13, 14, 15], 
     [16, 17, 18, 19], 
     [20, 21, 22, 23], 
     [24, 25, 26, 27], 
     [28, 29, 30, 31], 
     [32, 33, 34, 35], 
     [36, 37, 38, 39], 
     [40, 41, 42, 43], 
     [44, 45, 46, 47], 
     [48, 49, 50, 51], 
     [52, 53, 54, 55], 
     [56, 57, 58, 59], 
     [60, 61, 62, 63], 
     [64, 65, 66, 67], 
     [68, 69, 70, 71], 
     [72, 73, 74, 75], 
     [76, 77, 78, 79], 
     [80, 81, 82, 83], 
     [84, 85, 86, 87], 
     [88, 89, 90, 91], 
     [92, 93, 94, 95], 
     [96, 97, 98, 99]]) 
>>> 
>>> A = np.delete(A, 2, 1) 
>>> A 
array([[ 0, 1, 3], 
     [ 4, 5, 7], 
     [ 8, 9, 11], 
     [12, 13, 15], 
     [16, 17, 19], 
     [20, 21, 23], 
     [24, 25, 27], 
     [28, 29, 31], 
     [32, 33, 35], 
     [36, 37, 39], 
     [40, 41, 43], 
     [44, 45, 47], 
     [48, 49, 51], 
     [52, 53, 55], 
     [56, 57, 59], 
     [60, 61, 63], 
     [64, 65, 67], 
     [68, 69, 71], 
     [72, 73, 75], 
     [76, 77, 79], 
     [80, 81, 83], 
     [84, 85, 87], 
     [88, 89, 91], 
     [92, 93, 95], 
     [96, 97, 99]]) 
0

वैकल्पिक रूप से, आप iloc

import numpy as np 
import pandas as pd 
data = np.random.normal(size=2000).reshape(20, 100) 
df = pd.DataFrame(data, columns=list(range(1,101))) 
df.iloc[:,list(range(49)) + list(range(50, 100))] 
संबंधित मुद्दे