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

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

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

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

Q&A

解決済

1回答

241閲覧

pythonの下向き三角行列を操作したい

TeRa_130

総合スコア61

Python

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

0グッド

0クリップ

投稿2019/04/27 01:18

前提・実現したいこと

pythonをしようしています。
dist_aの下向き(体格要素を含む)行列の値を操作したいです。

python

1a = [[6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 8]] 2dist_a = distance.cdist(a, a, metric='euclidean') 3print(dist_a) 4 5Out: 6array([[ 0., 1., 2., 3., 4., 5., 6., 7., 7.], 7 [ 1., 0., 1., 2., 3., 4., 5., 6., 6.], 8 [ 2., 1., 0., 1., 2., 3., 4., 5., 5.], 9 [ 3., 2., 1., 0., 1., 2., 3., 4., 4.], 10 [ 4., 3., 2., 1., 0., 1., 2., 3., 3.], 11 [ 5., 4., 3., 2., 1., 0., 1., 2., 2.], 12 [ 6., 5., 4., 3., 2., 1., 0., 1., 1.], 13 [ 7., 6., 5., 4., 3., 2., 1., 0., 0.], 14 [ 7., 6., 5., 4., 3., 2., 1., 0., 0.]])

具体例

このような形にしたいです。

python

1array([[ 100., 1., 2., 3., 4., 5., 6., 7., 7.], 2 [ 100., 100., 1., 2., 3., 4., 5., 6., 6.], 3 [ 100., 100., 100., 1., 2., 3., 4., 5., 5.], 4 [ 100., 100., 100., 100., 1., 2., 3., 4., 4.], 5 [ 100., 100., 100., 100., 100., 1., 2., 3., 3.], 6 [ 100., 100., 100., 100., 100., 100., 1., 2., 2.], 7 [ 100., 100., 100., 100., 100., 100., 100., 1., 1.], 8 [ 100., 100., 100., 100., 100., 100., 100., 100., 0.], 9 [ 100., 100., 100., 100., 100., 100., 100., 100., 100.]])

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

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

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

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

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

guest

回答1

0

ベストアンサー

tril_indices_from で下三角成分のインデックスを取得し、そのインデックスの値を100に設定すればよいです。

numpy.tril_indices_from — NumPy v1.15 Manual

numpy - インデックスを作成する関数

python

1import numpy as np 2 3a = np.array( 4 [ 5 [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 7.0], 6 [1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 6.0], 7 [2.0, 1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 5.0], 8 [3.0, 2.0, 1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 4.0], 9 [4.0, 3.0, 2.0, 1.0, 0.0, 1.0, 2.0, 3.0, 3.0], 10 [5.0, 4.0, 3.0, 2.0, 1.0, 0.0, 1.0, 2.0, 2.0], 11 [6.0, 5.0, 4.0, 3.0, 2.0, 1.0, 0.0, 1.0, 1.0], 12 [7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0, 0.0, 0.0], 13 [7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0, 0.0, 0.0], 14 ] 15) 16 17a[np.tril_indices_from(a)] = 100 18print(a)
[[100. 1. 2. 3. 4. 5. 6. 7. 7.] [100. 100. 1. 2. 3. 4. 5. 6. 6.] [100. 100. 100. 1. 2. 3. 4. 5. 5.] [100. 100. 100. 100. 1. 2. 3. 4. 4.] [100. 100. 100. 100. 100. 1. 2. 3. 3.] [100. 100. 100. 100. 100. 100. 1. 2. 2.] [100. 100. 100. 100. 100. 100. 100. 1. 1.] [100. 100. 100. 100. 100. 100. 100. 100. 0.] [100. 100. 100. 100. 100. 100. 100. 100. 100.]]

投稿2019/04/27 03:40

tiitoi

総合スコア21956

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問