前回は、3つの二次元の配列をそれぞれRGB(赤・緑・青)の配列と見立てて、それらを二次元のまま結合させて三次元画像に変換する実験をした。, 狙い通りの正しい画像として表示するためには、配列の結合の仕方や三次元配列の形状変換、座標変換などを上手くやらなければならなかった。, が、今回分かったのは、そんなことしなくともNumpyのnp.stack([配列1, 配列2,・・・], axis=座標軸) を使い、二次元配列を三次元方向(axis=2)に結合するだけで簡単に出来てしまう。, RGBの色チャンネルに見立てた二次元配列を3つ作る。 1,0,1 purple googletag.enableServices(); 2012/02/11 Gabe. googletag.pubads().setTargeting('blog_type', 'Tech'); 新しい配列のデータ型を指定します。, 例, numpy.int8などを指定します。 デフォルトでは numpy.float64. 配列を結合して1つにまとめることが可能です。 まず、1次元配列の結合から行ってみます。 import numpy as np x = np.array([1, 2, 3]) y = np.array([3, 2, 1]) xy = np.concatenate([x, y]) # 配列を結合 print(xy) # [1 2 3 3 2 1] 2つ以上の配列を結合する場合も同じように記述します。 黄色い単色画像が表示されれば狙いは成功。, 今度は、画像に見立てた3次元配列を縦や横に結合させ、繋げた3次元配列を画像表示させる実験。, h : horizontalのh。水平に(横に)結合。 googletag.defineSlot('/21812778492/blog_300x250_common_sidemiddle02_adsense', [[300, 250], [336, 280]], 'div-gpt-ad-1565198822157-0').addService(googletag.pubads()); 1,1,0 yellow googletag.defineSlot('/21812778492/blog_468x60_common_eyecatch02_adsence', [728, 90], 'div-gpt-ad-1567575393317-0').addService(googletag.pubads()); Numpyの配列の結合・分割について。 np.concatenate() 2個以上の配列を軸指定して結合する。 軸指定オプションのaxisはデフォルトが0 マスクは保存されない。 1,0,0 red googletag.cmd.push(function() { googletag.defineSlot('/21812778492/blog_300x250_common_fixed01', [[300, 250], [336, 280]], 'div-gpt-ad-1559710191960-0').addService(googletag.pubads()); 多次元配列を行優先 (C-style) か列優先 (Fortran-style) でメモリに格納するかを指定します。, jupyter-labやjupyter-notebookを使って、以下のコードを試してみてください。, In [~]と書かれているセルがコード、Out[~]と書かれている部分が出力結果になります。, このarray_info関数で先程作った配列を見てみると、要素が5つもつ配列ができていることがわかりますね。, また、前述の通り、dtypeを指定していない場合は、float64型になることがわかります。, dtypeというパラメータに、numpy.float32などの型を指定することで、任意の型で0初期化できます。, 真偽値(bool)でも可能です。この場合は0の代わりにFalseで埋められた配列ができます。, この関数は第一引数にshapeではなく、shapeを真似たい配列を指定してあげると、np.zerosと同じように0初期化した配列を作ってくれます。, この記事ではNumPyで0初期化した配列を生成する関数、np.zerosとnp.zeros_likeを紹介しました。, この記事で配列の初期化を勉強して、様々な科学計算の実装・機械学習の実装に挑戦してみてください!, 当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。 出来た三次元配列を画像と見立て、matplotlibのplt.imshow()で表示させる。 はじめに numpy配列を分割したくなることがたまにありますよね。 当然というか、それ用の関数が用意されています。でも使い方をよく忘れるので覚書として書いておくことにします。 目次 はじめに np.split np.array_split vsplit, hsplit, dsplit まとめ スポンサーリンク (ads… googletag.defineSlot('/21812778492/blog_300x250_common_ctc02_adsence', [300, 250], 'div-gpt-ad-1566564559478-0').addService(googletag.pubads()); 0,0,0 black googletag.defineSlot('/21812778492/blog_300x250_common_ctc01_adsence', [300, 250], 'div-gpt-ad-1566564396953-0').addService(googletag.pubads()); googletag.defineSlot('/21812778492/blog_728x90_common_overlay', [728, 90], 'div-gpt-ad-1584694002281-0').addService(googletag.pubads()); googletag.pubads().collapseEmptyDivs(); 複数のNumPy配列ndarrayを結合(連結)するためには様々な関数がある。ここでは以下の内容について説明する。 numpy.concatenate()の基本的な使い方 結合する配列ndarrayのリストを指定; 結合する軸(次元)を指定: 引数axis; numpy.stack()で新たな軸(次元)に沿って結合 numpy.block()で配置を指定して結合 googletag.defineSlot('/21812778492/blog_300x250_common_fixed01_adsense', [[300, 250], [336, 280]], 'div-gpt-ad-1565194485392-0').addService(googletag.pubads()); googletag.enableServices(); ブログを報告する, 【Numpy】np.stackを使った2次元配列の3次元方向への結合と画像生成の実験. googletag.defineSlot('/21812778492/blog_300x250_common_fixed01_adsense', [[300, 250], [336, 280]], 'div-gpt-ad-1565194485392-0').addService(googletag.pubads()); googletag.defineSlot('/21812778492/blog_300x250_common_fixed02_adsense', [[300, 250], [336, 280]], 'div-gpt-ad-1565198391774-0').addService(googletag.pubads());