2015-12-27 21 views
5

20x100個の配列があると仮定します。私は50番目を除いてすべての列を選択したいと思います。 このスレッドをフォローしていたのでExtracting specific columns in numpy array しかし、それは役に立たなかった。私は使用しようとしましたnumpy配列で特定の列を選択する方法は?

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

しかし、間違いを与えていました。 Rでこれを行うのは簡単です

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

しかし、Pythonで理解できませんでした。 助けてください。おかげ

答えて

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]) 

となり、xから50番目の列(番号49)が欠落していることがわかります。

+0

クール用することができます!以前はそれを見ていなかった。 *ウィッシュ*私は前にそれを見ました!非常にnumpythonic。 – uhoh

1

これは動作します:

>>> a = np.arange(2000).reshape(20, 100) 
>>> b = a[:, np.arange(a.shape[1]) != 50] 
>>> b.shape 
(20, 99) 
1
あなたは単に np.delete()を使用して50番目の列を削除することができ

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

デモ:R-などを取得する

>>> 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))] 
関連する問題