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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

2929閲覧

配列の要素入れ替えについて

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/01/14 09:45

##配列の要素を入れ替えたいです
Pythonで書かれたコードでの添え字の[:, :, 0]の意味がわかりません。
C#だと添え字は何と書けばいいでしょうか?教えてください。

0番目の要素と、2番目の要素を入れ替える

Python

1   # 配列の形状変換。 2 # 1つの要素がRGBAである、height * widthの行列を作る。 3 img = numpy.reshape(tmp, (height, wigth, 4)) 4 5 b = img[:, :, 0].copy() # ここのコピーも必須 6 img[:, :, 0] = img[:, :, 2] 7 img[:, :, 2] = b 8引用元:https://qiita.com/frameair/items/0c8113c716f87ccb8a37

C#

1using (Stream stream = Comannd("exec-out screencap")) 2 { 3 /* 4 1~4byte 4byte width 5 5~8byte 4byte height 6 9~12byte 4byte pixelformat 7 13byte~ 画素。RGBA順に並んでおり、4byteで1ピクセル 8 */ 9 using(MemoryStream ms = new MemoryStream()) 10 { 11 stream.CopyTo(ms); 12 byte[] buf = ms.ToArray(); 13 14 ms.Position = 13; 15 ms.Read(buf, 0, buf.Length -13); 16 17 NDArray img = np.reshape(buf, (1080, 2340, 4)); 18 img[????] 19 20 } 21 } 22 23static Stream Comannd(string comannd) 24 { 25 using (var pro = new Process()) 26 { 27 var startInfo = new ProcessStartInfo() 28 { 29 FileName = @"C:\Users\hoge\Documents\Zips\platform-tools\adb.exe", 30 Arguments = comannd, 31 CreateNoWindow = true, 32 UseShellExecute = false, 33 RedirectStandardOutput = true, 34 }; 35 pro.StartInfo = startInfo; 36 pro.Start(); 37 pro.WaitForExit(3000); 38 return pro.StandardOutput.BaseStream; 39 } 40 }

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

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

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

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

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

guest

回答1

0

ベストアンサー

「Python 配列 添え字 コロン」と検索すれば詳細が出てきますがスライス操作となります。
a[始点:終点]という書き方ができ、始点を省略した場合は最初から、終点を省略した場合は最後までという指定となります。
ですので、
a[:]=0;
と書いた場合、配列aの要素の最初から最後までに0を代入するという動きになります。

C#ではスライス操作はありませんので、素直にループで組むのが分かりやすいのではないでしょうか。

投稿2020/01/14 10:22

YAmaGNZ

総合スコア10242

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

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

退会済みユーザー

退会済みユーザー

2020/01/14 10:27

初めて見る添え字でわけがわからなくなっていました、丁寧な回答ありがとうございました。
退会済みユーザー

退会済みユーザー

2020/01/14 13:21

完全に余談ですがC#8.0ではpythonのようなインデックスの範囲指定が実装されているようです。 もっともC#8.0は.Net Core3.0以降対応のようなので使える場面が限られるかもしれません(正直私もCoreはクロスプラットフォームらしいくらいの知識しかないのですが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問