このセクションでは、numpyの中に三つの主要な機能について説明し、ランダム関数、統計関数および勾配関数、および栗の画像によって表される、より古典的な配列であります!私たちは、新たな領収書と共通の進歩を持つことができることを願っています!
A、np.randomランダム関数(1)
- ランド(D0、D1···、DN)D0-DNは、乱数配列を作成し、フロートによれば、[0,1)に均等に分布。
- 関数randn(D0、D1···、DN)D0-DN、標準正規分布に従った乱数の配列を作成します。
- randint(低[、高さ、形状)形状のランダムな整数または整数のアレイ、範囲[低、高)を作成するために応じ。
- シード(S)乱数シード、Sはシード値を与えられています。
栗の場合:
ランダムに生成された3×4×5つの配列の次元を用いrand関数:
インポートNPとしてnumpyの A = np.random.rand(3、4、5 ) プリント()
[[[0.19286829 0.43532618 0.76943415 0.70048451 0.57059645 ] [ 0.2879177 0.09881033 0.5569482 0.66148796 0.79611884 ] [ 0.31448432 0.83716575 0.41643824 0.86719307 0.03466441 ] [ 0.32409171 0.68495018 0.92662221 0.02462274 0.43318601 ]] [[ 0.03772647 0.86047162 0.22297318 0.25169961 0.04855723 ] [ 0.19216536 0.34209728 0.41324992 0.17463538 0.23026854 ] [ 0.31120323 0.34793805 0.6097682 0.26008646 0.75306371 ] [ 0.60755713 0.28799642 0.60235958 0.69418041 0.04996581 ]] [[ 0.68136971 0.27706275 0.70780751 0.49022203 0.1700511] [ 0.17666416 0.55479535 0.18881965 0.24248033 0.58432088 ] [ 0.03958541 0.34799081 0.62522536 0.66729503 0.94124187 ] [ 0.98251218 0.38442045 0.9647026 0.09981866 0.07480372]]]
3×4×5配列の次元関数randn、ランダムに生成された関数を使用して:
インポートNPとしてnumpyの SN = np.random.randn(3、4、5 ) プリント(SN)
標準正規分布のアレイを生成します。
[[[-0.97546248 0.46482237 0.46232481 -0.81607844 0.02227037 ] [ 1.41672647 0.3036927 -0.46643274 0.46203588 1.19725522 ] [ -1.00459345 -1.51265022 -1.10989086 -1.73492446 0.7985382 ] [ -0.55015804 1.75202698 0.34619959 2.10673056 1.1267265 ]] [[ -0.52607436 -1.11950328 0.00868366 1.78641448 -1.2655594 ] 【 2.17963077 0.13667921 2.35539206 -0.23587487 0.89031534 ] [ -0.03255321 -0.80851392 0.1731047 -2.35959613 -0.09527181 ] [ -0.5231855 -0.41071298 -0.24792927 0.58756083 -0.01207484 ]] [[0.82598316 0.16728761 0.73248991 -1.03238179 -0.91388066 ] [ 0.53091162 0.50406905 -1.54711219 -0.44278951 -1.08371051 ] [ 0.95577053 0.8806842 -0.48579249 -0.07832728 -0.23302233 ] [ 2.38093125 -0.93528845 -0.50766876 0.81836112 -1.77913608]]]
ランダムな配列を生成するために、SEED()関数とrandint()関数を使用:
np.random.seed(10 ) Bが np.random.randint(100、200、(3、4 = )) プリント(B)を
:範囲間隔(100、200)内のランダムに生成された数
[109 115 164 128 ] [ 189 193 129 108 ] [ 173 100 140 136]
使用シード(10)再び、同じシード与え、我々は乱数ジェネレータが同じであることがわかります。
インポートのNPとしてnumpyの np.random.seed( 10 ) B = np.random.randint(100、200、(3、4 )) プリント(B) np.random.seed( 10 ) 印刷(np.random.randint( 100、200、(3,4)))
次のようにまったく同じ結果を生成します。
[109 115 164 128 ] [ 189 193 129 108 ] [ 173 100 140 136 ] [ 109 115 164 128 ] [ 189 193 129 108 ] [ 173 100 140 136]
二、np.randonランダム関数(2)
- シャッフル()ランダムアレイによる第一のシャフト、変更アレイを配置。
- 順列()配列aを変更することなく、アレイの第一軸に従ってスクランブル新しい配列を生成するステップと
- P抽出要素と一次元アレイからの選択は、([、サイズ、交換P])、アレイサイズの形状を再利用する、デフォルトは偽であるかどうかを示す要素を交換し、形成されています。
栗の場合:
最初のランダム関数を生成して、形状を変更するためにシャッフル機能を使用します。
インポートnumpyのNPのように Aは np.random.randint(100、200、(3、4 = )) プリント() np.random.shuffle() プリント()
シャッフル機能は、私たちが見つかった配列の変更後に使用することができます。
[165 136 138 198 ] [ 185 182 199 130 ] [ 123 188 114 119 ] [ 123 188 114 119 ] [ 165 136 138 198 ] [ 185 182 199 130]
その後、栗を与えるために選択機能を使用します。
B = np.random.randint(100、200、(8 )) プリント(b)は、 プリント(np.random.choice(B、(3、2 ))) プリント(np.random.choice(B、(3 、2)、交換= 偽)) プリント(np.random.choice(B、(3,2)、P = B / np.sum(b)参照))
この関数は次のように結果が生成されます。
[152 142 143 125 195 140 109 181 ] [ 140 109 ] [ 152 125 ] [ 109 140 ] [ 195 152 ] [ 109 125 ] [ 142 181 ] [ 152 143 ] [ 143 140 ] [ 142 142 ]]
三、np.randomランダム関数(3)
- 均一な分布、低い開始値、ハイエンド値、サイズの形状を有するアレイを生成するために、均一な(低、高、サイズ)。
- 正規分布を有するアレイ、LOC平均して、スケールの標準偏差、サイズの形状を生成するために、通常の(LOC、スケール、サイズ)。
- ポアソン(LAM、サイズ)はポアソン分布を有するアレイを製造するために、ランダムイベント率、サイズの形状をLAM。
栗の場合:
均一に分布のアレイを生成する:値が0で開始し、値10
U = np.random.uniform(0、10、(3、4 )) プリント(U)
[4.9326288 7.34687698 4.97977426 7.99871934 ] [ 5.00649544 5.07442334 7.18781348 7.32208848 ] [ 3.34763035 0.07099091 5.13151326 3.18421811]
正規分布を生成アレイ、アレイ5の10の平均値と標準偏差:
N = np.random.normal(10、5、(3、4 )) プリント(N)
[6.8513438 11.24016929 10.4074887 16.40272973 ] [ 14.08424738 0.18636224 6.92151938 12.04935454 ] [ 16.29518527 -0.90952865 -2.54181221 20.08502763]
四、numpyの統計関数(基本機能)
- 所与の軸計算軸、軸または整数成分の後に、関連する配列要素に応じて和(軸=なし)。
- 平均値は、(軸=なし)は、所望の素子関連するシャフト軸が指定された配列、軸または整数成分に従って計算されます。
- 平均(軸=なし、重み=なし)関連要素シャフト軸の加重平均が所定の配列に従って計算されます。
- STD(軸=なし)は、シャフト軸に関連する要素の標準偏差が所定の配列に従って計算されます。
- VAR(軸=なし)分散関連する配列要素軸が所定の軸に従って計算されます。
栗の場合:
総和:
インポートNPとしてnumpyの A = np.arange(15).reshape((3、5 )) プリント(np.sum(A))
結果:
105
所望の軸を求めます。
プリント(np.mean(軸= 1 )) [ 2 7 12]
所望の軸0を求めます。
プリント(np.mean(軸= 0)) [ 5. 6. 7. 8. 9]
0は、加重平均を軸:
プリント(np.average(軸= 0、重み= [10、5、1 ])) [ 2.1875 3.1875 4.1875 5.1875 6.1875]
標準偏差を求めて:
印刷(np.std(a))は 4.320493798938574
分散を探しています:
印刷(npvar(A)) 18666666666666668
五、numpyの統計関数(アップグレード)
- 分配列内の要素の最小値、最大値を計算()MAX()。
- unravel_index(インデックス、形状)は、一次元に応じて、標準的な多次元インデックス添え字形状に変換します。
- PTP()の最大値と最小値との差の配列要素の計算。
- 中央値は、()の中央値(メジアン)の要素の配列を算出します。
- 最大次元削減指標後argmin最小値の要素の配列を計算()ARGMAX()。
栗の場合:
根本的な配列を生成します:
B = np.arange(15、0、-1).reshape(3,5 )
アレイ内の最大値:
印刷(np.max(b)参照)
還元後の最大寸法の配列インデックス用:
印刷(np.argmax(b)参照)
一次元形状は、多次元インデックスindexインデックスに変換しました:
プリント(np.unravel_index(np.argmax(B)、B.SHAPE))
最大値と最小値の差分。
印刷(np.ptp(b)参照)
中央値の配列を求めて:
印刷(np.median(b)参照)
六、numpyの勾配関数
numpyの勾配関数はnp.gradient(f)は、関数fは、fは多次元である場合、勾配は各次元を返し、勾配配列要素を算出することが可能です。
いわゆる勾配が連続した値、すなわち勾配の変化率を指します。
栗の場合:
一次元配列:
配列を構築します。
インポートのNPとしてnumpyの A = np.random.randint(0、20、(5))
配列の勾配を探します:
印刷(np.gradient(a)参照)
結果は次のとおりです。
[2. 0 4. 3.5 -3。]
二次元配列:
配列を構築します。
C = np.random.randint(0、50、(3,5))
配列の勾配を探します:
印刷(np.gradient(c)参照)
結果は次のとおりです。
[配列([-9。、4、7、0、-42 ]、 [ -5。、2、-7。、11、-22 ]、 [ -1、0。 、-21。、22、-2 ]])、 アレイ([ -22、-1、-4.5、9、47 ]、 [ -9。、7、-6.5、-15.5 、5 。]、 [ -8、-3、4.5、-6、-19]])]
画像の七つの配列表現:
私たちは、画像描かフリーハンドを既存の効果に入れることができます。
元の画像は以下のとおりです。
PIL インポートイメージ インポートnumpyのNP AS A = np.asarray(Image.open(' beijing.jpg ').convert(' L '))。asType(' フロート' ) 深さ = 10 #(0-100) グラnp.gradient =() #は、画像のグレー値をフェッチ勾配 grad_x、grad_y =グラ #それぞれ水平方向および垂直方向の画像勾配値が取ら * =深さ/ 100 grad_x grad_xを。 grad_y = grad_y深さ* / 100 。 A = np.sqrt( ** ** 2 + grad_y grad_x 2 + 1 。) uni_xGrad_x = / A uni_y = grad_y / A uni_z = 1 / A vec_el = np.pi / 2.2 #のソースラジアン頂角、 vec_az = np.pi / 4 #光源の方位角、ラジアン値 DX = NP。 COS(vec_el)* np.cos(vec_az) #1 、x軸衝撃源 のDy = np.cos(vec_el)* np.sin(vec_az) #y軸上の光効果 DZ = np.sin(vec_el) #のソースz軸の効果 B = 255 *(DX + Dyをuni_x * * * uni_z uni_y + DZ) #のソース正規 B b.clip =(0、255 ) IM = Image.fromarray(b.astype(' 'UINT8)) #再構成画像 im.save(' beijing4.jpg ')
最終的な効果は、グラフィック生成されます。
この章の内容は、あなたがnumpyのライブラリの深いエントリを持って助けることを望んで、これを共有します!