質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1490閲覧

遺伝的アルゴリズムによる特徴選択について

WaterValley

総合スコア17

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/06/13 08:09

###pythonによる遺伝的アルゴリズムの実装
遺伝的アルゴリズムを使った特徴選択をpythonで実装しようとしているのですが、わからないことがあります。
例えば以下のようなnumoy配列があったとします。

[0,1,0,1]

この場合、numpy行列の2行目と4行目を取り出したいのですが、どのようなコードにしたらいいでしょうか。
ご回答いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

[0,1,0,1] のように取り出すべき行だけ 1 のリストを渡された場合に、どうすれば良いか?ということであれば、下記のようにすることで、取り出せます。

python

1import numpy as np 2nparray= np.random.random(40).reshape(4,10) #例えば、4行10列のランダム値が入った行列が有るとする 3selector=[0,1,0,1] #4行の中から取り出すべきところだけ1になっている配列 4selector_bool=np.array(selector,dtype=np.bool) #selector をbool化する 5 6nparry_selected=nparray[selector_bool] #selectorで指定された2行目と4行目が入った 2行10列の配列ができる 7

投稿2017/06/13 08:40

hiro-k

総合スコア902

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

行列aから、bのうち値が1である列位置を抽出した結果がcになります。

Python

1import numpy as np 2a = np.array([[2,5,3,8],[1,4,2,7]]) 3print(a) 4b = np.array([0,1,0,1]) 5print(b) 6c = a[:,b==1] 7print(c)

投稿2017/06/13 08:18

編集2017/06/13 08:51
can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WaterValley

2017/06/13 08:27

申し訳ありません、自分の説明の仕方が悪かったのですが、 [0,1,0,1]の場合、これとは別の行列の、2行目と4行目を取り出すにはどうしたらいいでしょうか?
can110

2017/06/13 08:31

すみません。質問が理解できません。 別の行列とはどのようなもので、得たい結果(行列)はどのようなものでしょうか? 具体的な例を示していただけると回答できるかもしれません。
WaterValley

2017/06/13 08:47

例えば以下のような行列があったとします。 red blue green yellow 2 5 3 8 1 4 2 7 ここで、これとは別の独立した配列が[0,1,0,1]だとすると、取り出したいのは、 blue yellow 5 8 4 7 となります。 説明がわかりにくくてすみません。
WaterValley

2017/06/13 08:51

うまく行きました! 行位置ではなく列位置を抽出したい場合は c = a[b==1,:] の部分を変更すればいいのでしょうか?
can110

2017/06/13 08:52

なるほどです。回答を修正しました。
WaterValley

2017/06/13 08:52

ありがとうございます!
can110

2017/06/13 08:52

はい。c = a[:,b==1]にするだけです。
WaterValley

2017/06/14 06:01

度々すみません。もう1つお伺いしたいことがあるのですが、 ご回答していただいたコードの中で、 aをnumpyではなくpandasで同じことを行うにはcをどう変更したら良いでしょうか? bはそのままnumpy配列として扱いたいと考えています。
can110

2017/06/14 06:21

pandasでは方法も異なりますので、別途、あたらめて具体例とともに質問していただけますか?
WaterValley

2017/06/14 06:44

ありがとうございます。 質問し直しましたので、お時間ありましたらご回答いただけると嬉しいです。 よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問