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

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

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

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

2回答

2386閲覧

numpy 配列の並び替え

akipropro

総合スコア14

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2017/01/17 12:02

編集2017/01/17 13:30

以下のnumpy配列を並び替えしたいのですが、上手く行きません。
知恵をお貸しください。
宜しくお願いします。

###発生している問題・エラーメッセージ

エラーメッセージ

###該当のソースコード
import numpy as np

np.array =([[7,2],[10,1],[3,1],[2,1],[4,1],[8,1]]) 最初の配列です。

###試したこと
普通のソートで出来そうなメソッドを探しましたが、見つかりませんでした。
やりたいことは先ず先頭の要素でソートして、
np.array =([[2,1],[3,1],[4,1],[7,2],[8,1],[10,1]]) を得る
その後[xx,0]を指定場所にインサートし、最終的に
np.array =([[0,0],[1,0],[2,1],[3,1],[4,1],[5,0],[6,0],[7,2],[8,1],[9,0],[10,1]])
としたいです。
[0,0]は0番地、[1,0]は1番地、[5,0]は5番地、[6,0]は6番地、[9,0]は9番地にインサートし、最終的に11個の配列にします。

※ 先頭の要素がインデックスを兼ねており、np.arrayは固定値ではありません。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

MasashiKimura

2017/01/17 12:13

どんな配列をどういうふうに並び替えたいのか書かないと答えようがないかと思います。
MasashiKimura

2017/01/17 13:05

「その後[xx,0]を指定場所にインサートし」の指定場所とはどこでしょうか?
guest

回答2

0

ベストアンサー

辞書にしてから処理すれば良いと考えました。
もちろん他にも方法はあるのでしょうね。

python

1>>> a 2array([[ 7, 2], 3 [10, 1], 4 [ 3, 1], 5 [ 2, 1], 6 [ 4, 1], 7 [ 8, 1]]) 8>>> d = {} 9>>> for idx, val in a: 10... d[idx] = val 11... 12>>> d 13{2: 1, 3: 1, 4: 1, 7: 2, 8: 1, 10: 1} 14b = [] 15for i in range(11): 16... if i not in d: 17... b.append([i, 0]) 18... else: 19... b.append([i, d[i]]) 20>>> np.array(b) 21array([[ 0, 0], 22 [ 1, 0], 23 [ 2, 1], 24 [ 3, 1], 25 [ 4, 1], 26 [ 5, 0], 27 [ 6, 0], 28 [ 7, 2], 29 [ 8, 1], 30 [ 9, 0], 31 [10, 1]])

投稿2017/01/17 14:05

MasashiKimura

総合スコア1150

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

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

akipropro

2017/01/17 14:30 編集

dictにする発想が凄いと思いました。ずっとソートすることばかり考え、メソッドを探していました。 短時間でさくっと思いつくのも、やはり配列変換の慣れなのでしょうか。 欲しい結果が得られました。ご協力頂きありがとうございました。
guest

0

例えば、以下のような感じでしょうか?

python

1>>> a = np.array =([[7,2],[10,1],[3,1],[2,1],[4,1],[8,1]]) 2>>> b =np.sort(a, axis=0) 3>>> np.insert(b, slice(1), [0, 0]).reshape(-1, 2) 4array([[ 0, 0], 5 [ 2, 1], 6 [ 3, 1], 7 [ 4, 1], 8 [ 7, 1], 9 [ 8, 1], 10 [10, 2]])

投稿2017/01/17 12:42

MasashiKimura

総合スコア1150

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

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

akipropro

2017/01/17 13:45 編集

回答ありがとうございます。 質問に不備があり済みません。 初期値としての配列の要素の1番目と2番目は分割せずソートしたいのです。この辺りが上手く行きませんでした。例、[7,2] 最終的に欲しいのは以下の配列です。 array =([[0,0],[1,0],[2,1],[3,1],[4,1],[5,0],[6,0],[7,2],[8,1],[9,0],[10,1]])
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問