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

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

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

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

Q&A

解決済

1回答

705閲覧

転置しているのに、結果が同じ

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

0クリップ

投稿2021/04/17 01:17

編集2021/04/18 14:00

googlecollavoratory利用。

python

1from google.colab import drive 2drive.mount('/content/drive') 3 4import numpy as np 5from PIL import Image 6 7# PILで開いたうえでデータをNumpy形式にする 8# (例えばJPEGは圧縮されていてNumpyな配列になっていないので、 9# そこからNumpyのデータ空間(?)に持ってくる必要がある) 10img = np.asarray(Image.open("drive/My Drive/mnist_dataset/rei.jpg")) 11 12# 元画像のshape (PILではchはRGB) 13# print(img.shape) 14 15# カラー画像の時Gだけ抜き取りたい 16if len(img.shape) ==3: 17 h, w, ch = img.shape 18 19 # RGBのGだけ抜き取りたい 20 img_g = img[:,:,1] 21 22v_max, v_min,imgrows, lenrows, imgcolumns, lencolumns = 250, 200, [], [], [], [] 23 24for img in img_g: 25 rows = img[(v_min<img)&(v_max>img)] 26 columns = img.T[(v_min<img.T)&(v_max>img.T)] 27 imgrows.append(rows) 28 lenrows.append(len(rows)) 29 imgcolumns.append(columns) 30 lencolumns.append(len(columns)) 31 32print(lenrows) 33print(lencolumns) 34 35for (img, imgt) in zip(img_g, img_g.T): 36 rows = img[(v_min<img)&(v_max>img)] 37 columns = imgt[(v_min<imgt)&(v_max>imgt)] 38 imgrows.append(rows) 39 lenrows.append(len(rows)) 40 imgcolumns.append(columns) 41 lencolumns.append(len(columns)) 42 43print(lenrows) 44print(lencolumns) 45 46print(img_g.shape) 47print(img_g.T.shape)

出力結果
Mounted at /content/drive
[0, 1, 1, 1, 85, 1, 3, 2, 3, 2, 0, 2, 1, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, 3]
[0, 1, 1, 1, 85, 1, 3, 2, 3, 2, 0, 2, 1, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, 3]
[0, 1, 1, 1, 85, 1, 3, 2, 3, 2, 0, 2, 1, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, 3, 0, 1, 1, 1, 85, 1, 3, 2, 3, 2, 0, 2, 1, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, 3]
[0, 1, 1, 1, 85, 1, 3, 2, 3, 2, 0, 2, 1, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
(79, 126)
(126, 79)

で、画像を行列形式で、img_gに読み込んだ後・・・なんですが、
元のデータと転置データについて、各、
rows = img[(v_min<img)&(v_max>img)]
columns = img.T[(v_min<img.T)&(v_max>img.T)]
の処理をしたいのですが、
なぜかどちらも前半部分については同じ結果になり(前半がずっと同じになるのはおかしい)、後半がも思った結果になりません。。
forのみのパターン、zipを使ったパターン、試しましたら、4個とも同じ結果になります、
転置してるのに、なぜでしょう。

自分は、ある範囲内の数字の「個数」を数えたい、転置前については問題なくできているのですが、
転置をすると、初めの方は0のみの行列ばかりになるため、範囲内の数字の個数は「0」が続くはずなのですが、そうなっていません。。

ちなみに取り込んだ画像(rei.jpg)は、
イメージ説明
で、
取り込んだカラーコードのGだけをとった行列(転置前)の一部は以下です。
[[ 0 0 0 0 0 0 0 0 32 43 36 39 36 38 37 40 39 36
38 38 38 38 39 38 38 38 38 38 38 38 38 38 38 38 38 38
38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
38 38 38 38 38 38 39 37 38 40 39 36 41 30 0 0 1 0
0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 231 255 255 255 254 255 255 255 251 255
255 251 255 253 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 254 253 255 252 251 255 254 172 0 0 1 0
0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 210 250 255 254 252 255 253 253 255 255
255 254 255 255 254 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 252 255 160 1 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 206 254 255 255 254 255 254 255 254 252
255 255 255 255 254 253 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 252 255 254 252 255 255 254 158 1 1 0 3
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
[ 0 0 0 0 0 0 0 0 208 255 255 254 254 255 253 255 255 255
251 202 210 212 213 214 214 214 214 214 214 214 214 214 214 214 214 214
214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214
214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214
214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214
214 214 214 214 214 214 212 212 214 213 210 217 218 145 0 2 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 209 255 254 255 255 255 254 255 253 251
255 0 3 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 2 0 0 4 0 135 156 153 154
152 154 153 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154]
[ 0 0 0 0 0 0 0 0 209 254 254 255 255 255 255 255 254 255
247 0 3 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 0 2 0 0 2 0 0 4 218 255 255 254
253 255 253 255 254 254 254 254 254 254 254 254 254 254 254 254 254 254]
[ 0 0 0 0 0 0 0 0 208 254 255 255 254 254 255 255 255 253
255 1 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 2 0 1 0 1 0 0 1 207 254 255 255
254 255 253 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]
[ 0 0 0 0 0 0 0 0 206 254 255 252 255 255 255 255 255 249
255 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 3 0 3 0 1 0 3 207 255 255 253
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]
[ 0 0 0 0 0 0 0 0 227 252 255 255 255 253 251 255 255 255
252 3 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 3 0 0 225 255 255 254
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]
[ 0 0 0 0 0 0 0 0 38 40 36 36 36 38 35 38 32 39
53 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 4 2 0 5 0 51 63 59 59
61 60 58 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60]
[ 0 0 0 0 0 0 0 0 228 251 255 255 252 254 255 255 255 255
255 76 255 255 255 253 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 252 253 254 248 183 1 1 0 0
1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
・・・(以下略)

これは解決難しいですかね・・・?

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

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

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

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

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

meg_

2021/04/17 01:38

img_gのshapeは何でしょうか?
退会済みユーザー

退会済みユーザー

2021/04/17 03:31

3です。
meg_

2021/04/17 06:11

> 3です 1次元なのですか?
退会済みユーザー

退会済みユーザー

2021/04/17 19:40

追記しました、img_gの行列は追記した通りです。
guest

回答1

0

ベストアンサー

Python

1for img in img_g: 2 rows = img[(v_min<img)&(v_max>img)] 3 columns = img.T[(v_min<img.T)&(v_max>img.T)]

で、rowsimgcolumnsimg.Tは同じものなので同じ結果が出ます。

zipを使った方はできているように思えますが

投稿2021/04/17 02:51

modieu

総合スコア282

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

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

退会済みユーザー

退会済みユーザー

2021/04/17 03:32

imgとim.Tがなぜ同じになるんでしょうか、imgの転置したのがimg_Tなのに、 zipも、後半は異なっていましたが、やはり予想結果と違いました。
退会済みユーザー

退会済みユーザー

2021/04/20 04:27

変数を変えていないのが原因だったようです、変えたらできました、以下コード。 from google.colab import drive drive.mount('/content/drive') import numpy as np from PIL import Image # PILで開いたうえでデータをNumpy形式にする # (例えばJPEGは圧縮されていてNumpyな配列になっていないので、 # そこからNumpyのデータ空間(?)に持ってくる必要がある) img = np.asarray(Image.open("drive/My Drive/mnist_dataset/rei.jpg")) # 元画像のshape (PILではchはRGB) # print(img.shape) # カラー画像の時Gだけ抜き取りたい if len(img.shape) == 3: h, w, ch = img.shape # RGBのGだけ抜き取りたい img_g = img[:,:,1] img_b = img[:,1,:] img_r = img[1,:,:] np.set_printoptions(threshold=1000) print(img) v_max, v_min, gimgrows, glenrows, gimgcolumns, glencolumns = 300, 200, [], [], [], [] for (img, imgt) in zip(img_g, img_g.T): rows = img[(v_min<img)&(v_max>img)] columns = imgt[(v_min<imgt)&(v_max>imgt)] gimgrows.append(rows) glenrows.append(len(rows)) gimgcolumns.append(columns) glencolumns.append(len(columns)) print(glenrows) print(glencolumns)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問