PIL Python
PIL Python
Membuat THUMBNAILS :
𝑝𝑖𝑙_𝑖𝑚. 𝑡ℎ𝑢𝑚𝑏𝑛𝑎𝑖𝑙((128,128))
Melakukan crop pada bagian tertentu pada citra menggunakan metode crop( )
setiap daerah didefinisikan oleh 4 titik, dimana masing-masing koordinat menunjukkan batas kiri, atas,
kanan, dan bawah. PIL digunakan sebagai koordinat sistem dengan (0,0) sebagai titik kiri-atas. Ekstraksi
wilayah sebagai contoh dapat dilakukan rotasi dan mengembalikannya menggunakan metode paste ( ),
sebagai berikut :
Untuk meresize ukuran citra dapat menggunakan metode resize ( ) dengan menginputkan ukuran
terbaru citra yang diinginkan.
Untuk melakukan rotasi pada citra, dimana rotasi dilakukan searah dengan jarum jam menggunakan
metode rotate( )
Hasil :
𝑎𝑥𝑖𝑠(‘𝑜𝑓𝑓’)
Penggunaan fungsi plot :
COLOR KET
‘B’ Blue
‘G’ green
‘R’ Red
‘C’ Cyan
‘M’ Magenta
‘Y’ Yellow
‘K’ Black
‘W’ White
LINE KET
‘-‘ Solid
‘- -‘ Dashed
‘:’ Dotted
MARKER KET
‘.’ Point
‘O’ Circle
‘S’ Square
‘*’ Star
‘+’ Plus
‘X’ X
Example :
Untuk membuat citra histogram, maka sebelumnya citra RGB harus dikonversi ke format grayscale
dengan fungsi convert ( ). Untuk menjadikan ke bentuk histogram dapat diganakan fungsi hist( )
𝑓𝑖𝑔𝑢𝑟𝑒()
ℎ𝑖𝑠𝑡(𝑖𝑚. 𝑓𝑙𝑎𝑡𝑡𝑒𝑛(),128)
(array([ 5.00000000e+00, 2.00000000e+00, 6.00000000e+00,
2.00000000e+00, 9.00000000e+00, 2.20000000e+01,
1.90000000e+01, 7.30000000e+01, 9.60000000e+01,
1.42000000e+02, 6.00000000e+01, 1.50000000e+02,
1.54000000e+02, 9.80000000e+01, 9.30000000e+01,
1.78000000e+02, 2.44000000e+02, 1.12000000e+02,
2.42000000e+02, 2.39000000e+02, 2.85000000e+02,
1.28000000e+02, 2.57000000e+02, 3.26000000e+02,
1.42000000e+02, 3.62000000e+02, 3.28000000e+02,
3.90000000e+02, 0.00000000e+00, 4.56000000e+02,
4.89000000e+02, 8.85000000e+02, 3.15000000e+02,
6.56000000e+02, 4.99000000e+02, 2.22000000e+02,
4.30000000e+02, 4.10000000e+02, 4.40000000e+02,
1.96000000e+02, 3.64000000e+02, 3.72000000e+02,
2.11000000e+02, 1.91000000e+02, 3.81000000e+02,
3.56000000e+02, 3.89000000e+02, 1.82000000e+02,
3.71000000e+02, 3.99000000e+02, 2.05000000e+02,
3.82000000e+02, 4.38000000e+02, 4.27000000e+02,
2.12000000e+02, 4.24000000e+02, 1.87000000e+02,
4.14000000e+02, 2.17000000e+02, 4.67000000e+02,
5.30000000e+02, 2.89000000e+02, 5.50000000e+02,
6.69000000e+02, 5.62000000e+02, 2.70000000e+02,
5.16000000e+02, 5.32000000e+02, 2.55000000e+02,
5.20000000e+02, 5.09000000e+02, 2.89000000e+02,
3.06000000e+02, 6.10000000e+02, 5.65000000e+02,
5.45000000e+02, 2.51000000e+02, 4.92000000e+02,
4.11000000e+02, 2.16000000e+02, 3.87000000e+02,
3.77000000e+02, 3.51000000e+02, 1.66000000e+02,
3.45000000e+02, 1.62000000e+02, 3.23000000e+02,
1.37000000e+02, 2.99000000e+02, 2.69000000e+02,
2.49000000e+02, 1.35000000e+02, 2.79000000e+02,
2.64000000e+02, 1.42000000e+02, 2.53000000e+02,
1.92000000e+02, 1.84000000e+02, 9.90000000e+01,
8.70000000e+01, 1.77000000e+02, 1.68000000e+02,
8.60000000e+01, 1.49000000e+02, 1.34000000e+02,
5.60000000e+01, 1.51000000e+02, 1.23000000e+02,
1.33000000e+02, 5.80000000e+01, 1.20000000e+02,
1.10000000e+02, 6.40000000e+01, 6.80000000e+01,
1.37000000e+02, 1.17000000e+02, 5.40000000e+01,
1.30000000e+02, 1.57000000e+02, 1.39000000e+02,
8.40000000e+01, 2.01000000e+02, 1.85000000e+02,
1.08000000e+02, 2.09000000e+02, 2.29000000e+02,
2.89000000e+02, 4.47860000e+04]), array([ 8. , 9.9296875, 11.859375 , 13.7890625,
15.71875 , 17.6484375, 19.578125 , 21.5078125,
23.4375 , 25.3671875, 27.296875 , 29.2265625,
31.15625 , 33.0859375, 35.015625 , 36.9453125,
38.875 , 40.8046875, 42.734375 , 44.6640625,
46.59375 , 48.5234375, 50.453125 , 52.3828125,
54.3125 , 56.2421875, 58.171875 , 60.1015625,
62.03125 , 63.9609375, 65.890625 , 67.8203125,
69.75 , 71.6796875, 73.609375 , 75.5390625,
77.46875 , 79.3984375, 81.328125 , 83.2578125,
85.1875 , 87.1171875, 89.046875 , 90.9765625,
92.90625 , 94.8359375, 96.765625 , 98.6953125,
100.625 , 102.5546875, 104.484375 , 106.4140625,
108.34375 , 110.2734375, 112.203125 , 114.1328125,
116.0625 , 117.9921875, 119.921875 , 121.8515625,
123.78125 , 125.7109375, 127.640625 , 129.5703125,
131.5 , 133.4296875, 135.359375 , 137.2890625,
139.21875 , 141.1484375, 143.078125 , 145.0078125,
146.9375 , 148.8671875, 150.796875 , 152.7265625,
154.65625 , 156.5859375, 158.515625 , 160.4453125,
162.375 , 164.3046875, 166.234375 , 168.1640625,
170.09375 , 172.0234375, 173.953125 , 175.8828125,
177.8125 , 179.7421875, 181.671875 , 183.6015625,
185.53125 , 187.4609375, 189.390625 , 191.3203125,
193.25 , 195.1796875, 197.109375 , 199.0390625,
200.96875 , 202.8984375, 204.828125 , 206.7578125,
208.6875 , 210.6171875, 212.546875 , 214.4765625,
216.40625 , 218.3359375, 220.265625 , 222.1953125,
224.125 , 226.0546875, 227.984375 , 229.9140625,
231.84375 , 233.7734375, 235.703125 , 237.6328125,
239.5625 , 241.4921875, 243.421875 , 245.3515625,
247.28125 , 249.2109375, 251.140625 , 253.0703125, 255. ]), <a list of 128 Patch objects>)
>
𝑠ℎ𝑜𝑤()
Dikarenakan fungsi hist( ) berisikan array satu dimensi maka, pada fungsi digunakan flatten( ) untuk
menjadikan array dua dimensi ke bentuk array satu dimensi yang diurutkan berdasarkan nilai baris.
INTERACTIVE ANNOTATION
Terkadang user membutuhkan interaksi dengan aplikasi, sebagai contoh dengan penanda titip pada
suatu citra, atau membutuhkan keterangan untuk beberapa data latih. Pylab dengan fungsi sederhana,
ginput( ), dapat memungkinkan user melakukan hal tersebut.
Example :
𝑓𝑟𝑜𝑚 𝑃𝐼𝐿 𝑖𝑚𝑝𝑜𝑟𝑡 𝐼𝑚𝑎𝑔𝑒
𝑓𝑟𝑜𝑚 𝑝𝑦𝑙𝑎𝑏 𝑖𝑚𝑝𝑜𝑟𝑡 ∗
NUMPY
ARRAY IMAGE REPRESENTATION
Array pada numpy merupakan array dengan multi dimensi yang dapat merepresentasikan vektor,
matriks maupun citra. Array sangat mirip dengan daftar (daftar dari daftar) tetapi terbatas untuk
memiliki semua elemen-elemen dari tipe yang sama. Example :
>>> 𝑖𝑚 = 𝑎𝑟𝑟𝑎𝑦(𝐼𝑚𝑎𝑔𝑒. 𝑜𝑝𝑒𝑛(′𝐶:\𝑃𝑦𝑡ℎ𝑜𝑛27\𝑦𝑎𝑙𝑒𝑓𝑎𝑐𝑒𝑠\𝑠𝑢𝑏𝑗𝑒𝑐𝑡01. 𝑔𝑙𝑎𝑠𝑠𝑒𝑠′))
>>> 𝑝𝑟𝑖𝑛𝑡 𝑖𝑚. 𝑠ℎ𝑎𝑝𝑒, 𝑖𝑚. 𝑑𝑡𝑦𝑝𝑒
(𝟐𝟒𝟑𝑳, 𝟑𝟐𝟎𝑳) 𝒖𝒊𝒏𝒕𝟖
>>> 𝑖𝑚 = 𝑎𝑟𝑟𝑎𝑦(𝐼𝑚𝑎𝑔𝑒. 𝑜𝑝𝑒𝑛(′𝐶:\𝑃𝑦𝑡ℎ𝑜𝑛27\𝑦𝑎𝑙𝑒𝑓𝑎𝑐𝑒𝑠\𝑠𝑢𝑏𝑗𝑒𝑐𝑡01. 𝑔𝑙𝑎𝑠𝑠𝑒𝑠′), ′𝑓′)
>>> 𝑝𝑟𝑖𝑛𝑡 𝑖𝑚. 𝑠ℎ𝑎𝑝𝑒, 𝑖𝑚. 𝑑𝑡𝑦𝑝𝑒
(𝟐𝟒𝟑𝑳, 𝟑𝟐𝟎𝑳) 𝒇𝒍𝒐𝒂𝒕𝟑𝟐
GRAYLEVEL TRANSFORMS
Setelah membaca citra ke bentuk array numpy, dapat dilakukan beberapa operasi matematika yang
dinginkan. Contoh sederhana dari transformasi graylevel citra. Menggunakan beberapa fungsi f dengan
interval 0 … 255 (atau 0 … 1) . example :
>>> 𝑓𝑟𝑜𝑚 𝑃𝐼𝐿 𝑖𝑚𝑝𝑜𝑟𝑡 𝐼𝑚𝑎𝑔𝑒
>>> 𝑓𝑟𝑜𝑚 𝑛𝑢𝑚𝑝𝑦 𝑖𝑚𝑝𝑜𝑟𝑡 ∗
>>> 𝑖𝑚 = 𝑎𝑟𝑟𝑎𝑦(𝐼𝑚𝑎𝑔𝑒. 𝑜𝑝𝑒𝑛(′𝐶:\𝑃𝑦𝑡ℎ𝑜𝑛27\𝑦𝑎𝑙𝑒𝑓𝑎𝑐𝑒𝑠\𝑠𝑢𝑏𝑗𝑒𝑐𝑡01. 𝑔𝑙𝑎𝑠𝑠𝑒𝑠′))
>>> 𝑖𝑚2 = 255 − 𝑖𝑚 #invert image
>>> 𝑖𝑚3 = (100.0/255) ∗ 𝑖𝑚 + 100 #clamp to interval 100 … 200
>>> 𝑖𝑚4 = 255.0 ∗ (𝑖𝑚/255.0) ∗∗ 2 #squared
>>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑖𝑚2)
< 𝒎𝒂𝒕𝒑𝒍𝒐𝒕𝒍𝒊𝒃. 𝒊𝒎𝒂𝒈𝒆. 𝑨𝒙𝒆𝒔𝑰𝒎𝒂𝒈𝒆 𝒐𝒃𝒋𝒆𝒄𝒕 𝒂𝒕 𝟎𝒙𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟔𝟏𝟖𝟏𝑬𝟒𝟖 >
>>> 𝑠ℎ𝑜𝑤()
>>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑖𝑚3)
< 𝒎𝒂𝒕𝒑𝒍𝒐𝒕𝒍𝒊𝒃. 𝒊𝒎𝒂𝒈𝒆. 𝑨𝒙𝒆𝒔𝑰𝒎𝒂𝒈𝒆 𝒐𝒃𝒋𝒆𝒄𝒕 𝒂𝒕 𝟎𝒙𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟔𝟒𝑪𝟕𝟕𝟏𝟎 >
>>> 𝑠ℎ𝑜𝑤()
>>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑖𝑚4)
< 𝒎𝒂𝒕𝒑𝒍𝒐𝒕𝒍𝒊𝒃. 𝒊𝒎𝒂𝒈𝒆. 𝑨𝒙𝒆𝒔𝑰𝒎𝒂𝒈𝒆 𝒐𝒃𝒋𝒆𝒄𝒕 𝒂𝒕 𝟎𝒙𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟕𝟓𝟎𝟗𝟐𝟒𝟎 >
>>> 𝑠ℎ𝑜𝑤()
Pada contoh pertama invert citra graylevels, contoh ketika mengaplikasikan fungsi quadratic.
Untuk melakukan mengecekkan nilai minimum dan maximum setiap citra dapat menggunakan :
>>> 𝑝𝑟𝑖𝑛𝑡 𝑖𝑛𝑡(𝑖𝑚. 𝑚𝑖𝑛()), 𝑖𝑛𝑡(𝑖𝑚. 𝑚𝑎𝑥())
𝟖 𝟐𝟓𝟓
>>> 𝑝𝑟𝑖𝑛𝑡 𝑖𝑛𝑡(𝑖𝑚2. 𝑚𝑖𝑛()), 𝑖𝑛𝑡(𝑖𝑚2. 𝑚𝑎𝑥())
𝟎 𝟐𝟒𝟕
>>> 𝑝𝑟𝑖𝑛𝑡 𝑖𝑛𝑡(𝑖𝑚3. 𝑚𝑖𝑛()), 𝑖𝑛𝑡(𝑖𝑚3. 𝑚𝑎𝑥())
𝟏𝟎𝟑 𝟐𝟎𝟎
>>> 𝑝𝑟𝑖𝑛𝑡 𝑖𝑛𝑡(𝑖𝑚4. 𝑚𝑖𝑛()), 𝑖𝑛𝑡(𝑖𝑚4. 𝑚𝑎𝑥())
𝟎 𝟐𝟓𝟓
Untuk melakukan transformasi array( ) dapat dilakukan menggunakan fungsi PIL fromarray( ), sebagai
berikut :
>>> 𝑝𝑖𝑙_𝑖𝑚 = 𝐼𝑚𝑎𝑔𝑒. 𝑓𝑟𝑜𝑚𝑎𝑟𝑟𝑎𝑦(𝑖𝑚)
>>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑝𝑖𝑙_𝑖𝑚)
< 𝒎𝒂𝒕𝒑𝒍𝒐𝒕𝒍𝒊𝒃. 𝒊𝒎𝒂𝒈𝒆. 𝑨𝒙𝒆𝒔𝑰𝒎𝒂𝒈𝒆 𝒐𝒃𝒋𝒆𝒄𝒕 𝒂𝒕 𝟎𝒙𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟕𝟖𝟒𝟔𝑫𝑨𝟎 >
>>> 𝑠ℎ𝑜𝑤()
untuk mengubah tipe data image dari “uint8” ke bentuk type data lainnya, seperti pada im3 atau im4,
membutuhkan konversi balik sebelum membuat PIL image.
>>> 𝑝𝑖𝑙_𝑖𝑚 = 𝐼𝑚𝑎𝑔𝑒. 𝑓𝑟𝑜𝑚𝑎𝑟𝑟𝑎𝑦(𝑢𝑖𝑛𝑡8(𝑖𝑚))
>>> 𝑖𝑚𝑠ℎ𝑜𝑤(𝑝𝑖𝑙_𝑖𝑚)
< 𝒎𝒂𝒕𝒑𝒍𝒐𝒕𝒍𝒊𝒃. 𝒊𝒎𝒂𝒈𝒆. 𝑨𝒙𝒆𝒔𝑰𝒎𝒂𝒈𝒆 𝒐𝒃𝒋𝒆𝒄𝒕 𝒂𝒕 𝟎𝒙𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟕𝟗𝟕𝟒𝟒𝑨𝟖 >
>>> 𝑠ℎ𝑜𝑤()
IMAGE RESIZING
>>> 𝑑𝑒𝑓 𝑖𝑚𝑟𝑒𝑠𝑖𝑧𝑒(𝑖𝑚, 𝑠𝑧):
#resize an image array using PIL
𝑝𝑖𝑙_𝑖𝑚 = 𝐼𝑚𝑎𝑔𝑒. 𝑓𝑟𝑜𝑚𝑎𝑟𝑟𝑎𝑦(𝑢𝑖𝑛𝑡8(𝑖𝑚))
𝑟𝑒𝑡𝑢𝑟𝑛 𝑎𝑟𝑟𝑎𝑦(𝑝𝑖𝑙_𝑖𝑚. 𝑟𝑒𝑠𝑖𝑧𝑒(𝑠𝑧))
HISTOGRAM EQUALIZATION
>>> 𝑑𝑒𝑓 ℎ𝑖𝑠𝑡𝑒𝑞(𝑖𝑚, 𝑛𝑏𝑟_𝑏𝑖𝑛𝑠 = 256):
"""𝐻𝑖𝑠𝑡𝑜𝑔𝑟𝑎𝑚 𝑒𝑞𝑢𝑎𝑙𝑖𝑧𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑎 𝑔𝑟𝑎𝑦𝑠𝑐𝑎𝑙𝑒 𝑖𝑚𝑎𝑔𝑒. """
#𝑔𝑒𝑡 𝑖𝑚𝑎𝑔𝑒 ℎ𝑖𝑠𝑡𝑜𝑔𝑟𝑎𝑚
𝑖𝑚ℎ𝑖𝑠𝑡, 𝑏𝑖𝑛𝑠 = ℎ𝑖𝑠𝑡𝑜𝑔𝑟𝑎𝑚(𝑖𝑚. 𝑓𝑙𝑎𝑡𝑡𝑒𝑛(), 𝑛𝑏𝑟_𝑏𝑖𝑛𝑠, 𝑛𝑜𝑟𝑚𝑒𝑑 = 𝑇𝑟𝑢𝑒)
𝑐𝑑𝑓 = 𝑖𝑚ℎ𝑖𝑠𝑡. 𝑐𝑢𝑚𝑠𝑢𝑚() #𝑐𝑢𝑚𝑢𝑙𝑎𝑡𝑖𝑣𝑒 𝑑𝑖𝑠𝑡𝑟𝑖𝑏𝑢𝑡𝑖𝑜𝑛 𝑓𝑢𝑛𝑐𝑡𝑖𝑜𝑛
𝑐𝑑𝑓 = 255 ∗ 𝑐𝑑𝑓/𝑐𝑑𝑓[−1] #𝑛𝑜𝑟𝑚𝑎𝑙𝑖𝑧𝑒
EXAMPLE :
from PIL import Image
from numpy import *
from pylab import *
def f():
print(number)
def g():
print(number)
numbers=4
def h():
global number
print(number)
number=3
number=5
f()
g()
h()
f()
OUTPUT :
5
5
5
3
EXAMPLE :
from PIL import Image
from numpy import *
from pylab import *
x=-3
if x<0:
print('Negative change to zero')
x = 0
elif x==0:
print('Zero')
elif x==1:
print('Single')
else:
print('None')
print('frank kharisma')
for i in range(3,10,2):
print(i)
print('cathrine nicea')
for number in range (10):
if number in (3,4,7,9):
break
else:
continue
else:
pass
print('achiera brielle')
i=0
rangelist=range(10)
while rangelist[i]<4:
print(rangelist[i])
i+=1
OUTPUT :
Negative change to zero
12
test
(0.1+1.2j)
frank kharisma
3
5
7
9
cathrine nicea
achiera brielle
0
1
2
3
EXAMPLE :
print('bagian 1:')
def passing_example(a_list, an_int=2, a_string="A default string"):
a_list.append("A new item")
an_int=4
return a_list, an_int, a_string
passing_example([1,2,3],10)
print('bagian 2:')
def f(x):
return x%2!=0 and x%3!=0
print('bagian 3:')
def g(x):
return x**3
for element in map(g,[2,4,6,8]):
print(element)
print()
funcvar=lambda x:x+1
print('0')
print('bagian 4:')
def vargtest(a, b, *nkw, **kw):
print('a is: ',a)
print('b is: ',b)
for each_nkw in nkw:
print('additional non-keyword arg:',each_nkw)
for each_kw in kw:
print('additional keyword arg:"%s":%s' %(each_kw, kw[each_kw]))
vargtest(1,2,3,4,x=2,y=3)
vargtest(1,2,*(3,4),**{'x':2,'y':3})
OUTPUT:
5
7
11
13
17
19
23
()
bagian 3:
8
()
64
()
216
()
512
()
0
bagian 4:
('a is: ', 1)
('b is: ', 2)
('additional non-keyword arg:', 3)
('additional non-keyword arg:', 4)
additional keyword arg:"y":3
additional keyword arg:"x":2
('a is: ', 1)
('b is: ', 2)
('additional non-keyword arg:', 3)
('additional non-keyword arg:', 4)
additional keyword arg:"y":3
additional keyword arg:"x":2
EXAMPLE :
class Dog:
counter=0
def __init__(self,name):
self.name=name
Dog.counter+=1
def bark(self):
return self.name+'('+str(Dog.counter)+') wouaf'
dog1=Dog('Lassie')
dog2=Dog('Rex')
print(dog1.bark())
print(dog2.bark())
OUTPUT :
Lassie(2) wouaf
Rex(2) wouaf
NUMPY ARRAY
Help on built-in function array in module numpy.core.multiarray:
array(...)
array(object, dtype=None, copy=True, order='K', subok=False,
ndmin=0)
Create an array.
Parameters
----------
object : array_like
An array, any object exposing the array interface, an object
whose
__array__ method returns an array, or any (nested) sequence.
dtype : data-type, optional
The desired data-type for the array. If not given, then the
type will
be determined as the minimum type required to hold the objects
in the
sequence. This argument can only be used to 'upcast' the
array. For
downcasting, use the .astype(t) method.
copy : bool, optional
If true (default), then the object is copied. Otherwise, a
copy will
only be made if __array__ returns a copy, if obj is a nested
sequence,
or if a copy is needed to satisfy any of the other
requirements
(`dtype`, `order`, etc.).
order : {'K', 'A', 'C', 'F'}, optional
Specify the memory layout of the array. If object is not an
array, the
newly created array will be in C order (row major) unless 'F'
is
specified, in which case it will be in Fortran order (column
major).
If object is an array the following holds.
===== =========
===================================================
order no copy copy=True
===== =========
===================================================
'K' unchanged F & C order preserved, otherwise most similar
order
'A' unchanged F order if input is F and not C, otherwise C
order
'C' C order C order
'F' F order F order
===== =========
===================================================
Returns
-------
out : ndarray
An array object satisfying the specified requirements.
See Also
--------
empty, empty_like, zeros, zeros_like, ones, ones_like, full,
full_like
Notes
-----
When order is 'A' and `object` is an array in neither 'C' nor 'F'
order,
and a copy is forced by a change in dtype, then the order of the
result is
not necessarily 'C' as expected. This is likely a bug.
Examples
--------
>>> np.array([1, 2, 3])
array([1, 2, 3])
Upcasting:
Minimum dimensions 2:
Type provided:
>>> x = np.array([(1,2),(3,4)],dtype=[('a','<i4'),('b','<i4')])
>>> x['a']
array([1, 3])
EXAMPLE :
>>> import numpy as np
>>> A=np.array([1,2,3])
>>> B=np.array([[4,5,6]])
>>> A.shape
(3L,)
>>> B.shape
(1L, 3L)
>>> A
array([1, 2, 3])
>>> B
array([[4, 5, 6]])
>>> C=A+B
>>> C
array([[5, 7, 9]]) #menjumlahkan array A dan B
>>> type(C)
<type 'numpy.ndarray'> #type variable
>>> np.ndim(C)
2
>>> np.vstack([A,B])
array([[1, 2, 3],
[4, 5, 6]]) #data array ditampilkan secara vertikal
>>> np.hstack([np.matrix(A),B])
matrix([[1, 2, 3, 4, 5, 6]]) #data array ditampilkan secara horizontal
>>> C.tolist()
[[5, 7, 9]] #data pada variable C array
>>> C.tolist()[0]
[5, 7, 9] #data pada variable C array tanpa menggunakan tanda ( )
>>> np.array(C).reshape(-1,)
array([5, 7, 9])
>>> A=np.array([A])
>>> A
array([[1, 2, 3]])
>>> np.hstack([A,B])
array([[1, 2, 3, 4, 5, 6]]) #menggabungkan array A dan B secara
horizontal
>>> D=np.array([[1,2],[3,4]])
>>> D
array([[1, 2],
[3, 4]]) #data array D
>>> A[0,-1]
3
>>> D[1,0]
3
>>> D[:,1]
array([2, 4])
>>> D[1,:]
array([3, 4])
>>> F=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
>>> F
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
>>> F[1::2,1:3]
array([[ 6, 7],
[14, 15]])
>>> np.ix_([1,2,3],[0,2])
(array([[1],
[2],
[3]]), array([[0, 2]]))
>>> F[np.ix_([1,2,3],[0,2])]
array([[ 5, 7],
[ 9, 11],
[13, 15]])
>>> np.r_[0:4,7:9]
array([0, 1, 2, 3, 7, 8])
>>> np.r_[:4,0]
array([0, 1, 2, 3, 0])
>>> F[::-1,:]
array([[13, 14, 15, 16],
[ 9, 10, 11, 12],
[ 5, 6, 7, 8],
[ 1, 2, 3, 4]])
EXAMPLE :
>>> F
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]]) #elemen array F
>>> G=np.array([[1,4,7],[3,1,2],[9,5,6],[8,4,1]])
>>> G
array([[1, 4, 7],
[3, 1, 2],
[9, 5, 6],
[8, 4, 1]]) #elemen array G
>>> G.transpose()
array([[1, 3, 9, 8],
[4, 1, 5, 4],
[7, 2, 6, 1]]) #transpose array G
>>> G
array([[1, 4, 7],
[3, 1, 2],
[9, 5, 6],
[8, 4, 1]]) #perintah tersebut tidak mengubah isi elemen secara
permanen
>>> np.dot(F,G)
array([[ 66, 37, 33],
[150, 93, 97],
[234, 149, 161],
[318, 205, 225]]) #perkalian array F dan G
>>> F*G
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module>
F*G
ValueError: operands could not be broadcast together with shapes (4,4)
(4,3) #perkalian antara 2 array berbeda tidak bisa dilakukan
>>> F*F
array([[ 1, 4, 9, 16],
[ 25, 36, 49, 64],
[ 81, 100, 121, 144],
[169, 196, 225, 256]]) #array F pangkat 2
>>> F=np.matrix(F)
>>> F
matrix([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]]) #konversi array F ke bentuk matriks F
>>> G=np.matrix(G)
>>> G
matrix([[1, 4, 7],
[3, 1, 2],
[9, 5, 6],
[8, 4, 1]]) #konversi array G ke bentuk matriks G
>>> F*G
matrix([[ 66, 37, 33],
[150, 93, 97],
[234, 149, 161],
[318, 205, 225]]) #perkalian matriks F dan G
>>> F*F
matrix([[ 90, 100, 110, 120],
[202, 228, 254, 280],
[314, 356, 398, 440],
[426, 484, 542, 600]]) #perkalian matriks F dan F
>>> np.multiply(F,F)
matrix([[ 1, 4, 9, 16],
[ 25, 36, 49, 64],
[ 81, 100, 121, 144],
[169, 196, 225, 256]]) #matriks F pangkat 3
>>> G=F[:,::-1]
>>> G
matrix([[ 4, 3, 2, 1],
[ 8, 7, 6, 5],
[12, 11, 10, 9],
[16, 15, 14, 13]]) #mengcopy elemen F ke matriks G dimulai
dari elemen terakhir setiap baris
>>> X=G/F
>>> X
matrix([[4, 1, 0, 0],
[1, 1, 0, 0],
[1, 1, 0, 0],
[1, 1, 0, 0]]) #matriks X merupakan hasil bagi matriks G
terhadap matriks F
>>> F**2
matrix([[ 90, 100, 110, 120],
[202, 228, 254, 280],
[314, 356, 398, 440],
[426, 484, 542, 600]]) #perkalian matriks F dan F
>>> F**3
matrix([[ 3140, 3560, 3980, 4400],
[ 7268, 8232, 9196, 10160],
[11396, 12904, 14412, 15920],
[15524, 17576, 19628, 21680]]) #Perkalian matriks F, F dan F
>>> np.power(F,3)
matrix([[ 1, 8, 27, 64],
[ 125, 216, 343, 512],
[ 729, 1000, 1331, 1728],
[2197, 2744, 3375, 4096]]) #matriks F pangkat 3
>>> F>4
matrix([[False, False, False, False],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True]], dtype=bool)
#jika elemen matriks bernilai >4 maka bernilai true, else
bernilai false
>>> np.nonzero(F>4)
(array([1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3], dtype=int64),
array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
>>> F[F>4]
matrix([[ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]])
#menampilkan elemen matriks F lebih besar 4
>>> A[:]=3
>>> E=np.ones
>>> E=np.ones((2,3))
>>> E
array([[ 1., 1., 1.],
[ 1., 1., 1.]]) #elemen matriks E berisikan angka 1
>>> H=F #menyamakan isi elemen matriks H dan F, sehingga apabila
salah satu elemen berubah maka elemen pada matriks lainnya juga akan
berubah
>>> F
matrix([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
>>> H[1,1]=-1
>>> F
matrix([[ 1, 2, 3, 4],
[ 5, -1, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
>>> H=F.copy() #mencopy isi elemen F pada matriks H, jika elemen
matriks H berubah maka tidak akan mempengaruhi isi elemen matriks F
>>> H
matrix([[ 1, 2, 3, 4],
[ 5, -1, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
>>> H[1,1]=-2
>>> F
matrix([[ 1, 2, 3, 4],
[ 5, -1, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
>>> I=F[1:3,:]
>>> I[:]=3
>>> I=F[1:3,:]
>>> I
matrix([[3, 3, 3, 3],
[3, 3, 3, 3]])
>>> F
matrix([[ 1, 2, 3, 4],
[ 3, 3, 3, 3],
[ 3, 3, 3, 3],
[13, 14, 15, 16]])
>>> I=F[:,1:3].copy()
>>> I
matrix([[ 2, 3],
[ 3, 3],
[ 3, 3],
[14, 15]])
>>> I[:]=2
>>> F
matrix([[ 1, 2, 3, 4],
[ 3, 3, 3, 3],
[ 3, 3, 3, 3],
[13, 14, 15, 16]])
>>> F.flatten()
matrix([[ 1, 2, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 13, 14, 15,
16]]) #menampilkan isi matriks F dalam bentuk 1 baris
EXAMPLE :
>>> np.r_[:11]
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) #menampilkan array
dengan range 0 - 10
>>> np.r_['c',:11]
matrix([[ 0],
[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10]]) #menampilkan array dengan range 0 – 10 dan diurutkan
secara horizontal
>>> np.r_['r',:11]
matrix([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]) #menampilkan
array dengan range 0 – 10 dan diurutkan secara vertical
>>> np.zeros((3,4))
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]]) #menampilkan array elemen nol dengan 3
baris dan 4 kolom
>>> np.ones((3,4))
array([[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]]) #menampilkan array elemen 1 dengan 3
baris dan 4 kolom
>>> np.eye(3)
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]]) #menampilkan array elemen 1 secara diagonal
(identitas) dengan 3 baris dan 3 kolom
>>> np.diag([3,4,5])
array([[3, 0, 0],
[0, 4, 0],
[0, 0, 5]]) #menampilkan array elemen 3, 4, 5 secara diagonal
>>> np.random.rand(3,2)
array([[ 0.23458584, 0.24901121],
[ 0.43343077, 0.66511224],
[ 0.61652574, 0.06946595]]) #menampilkan nilai random 0 s.d 1
untuk 3 baris dan 2 kolom
>>> np.random.randn(3,2)
array([[-0.24529733, 0.72041882],
[-1.50920684, -0.18274377],
[-1.82148812, 0.95309485]]) #menampilkan nilai random -1 s.d 1
untuk 3 baris dan 2 kolom
>>> np.random.randint(2,9,(3,2))
array([[5, 8],
[6, 8],
[7, 7]]) #menampilkan nilai random 2 s.d 9 untuk 3 baris dan 2
kolom
>>> F=np.random.randint(2,9,(3,2))
>>> F
array([[4, 5],
[5, 3],
[7, 4]]) #menampilkan nilai variable F array secara random 2
s.d 9 untuk 3 baris dan 2 kolom
>>> F.max(0)
array([7, 5])
>>> F.max(1)
array([5, 5, 7])
>>> F.max()
7
>>> G=np.random.randint(2,9,(3,2))
>>> G
array([[2, 8],
[7, 6],
[8, 6]])
>>> np.maximum(F,G)
array([[4, 8],
[7, 6],
[8, 6]])
>>> np.linalg.norm(F)
11.832159566199232
>>> H=np.random.randint(0,2,(2,3))
>>> H
array([[1, 1, 0],
[1, 0, 1]])
>>> I=np.random.randint(0,2,(2,3))
>>> I
array([[0, 1, 0],
[0, 1, 0]])
>>> np.logical_and(H,I)
array([[False, True, False],
[False, False, False]], dtype=bool)
>>> np.logical_or(H,I)
array([[ True, True, False],
[ True, True, True]], dtype=bool)
>>> H&I
array([[0, 1, 0],
[0, 0, 0]])
>>> H|I
array([[1, 1, 0],
[1, 1, 1]])
EXAMPLE :
>>> import numpy.linalg as linalg
>>> import numpy as np
>>> D=np.array([[1,2],[3,4]))
SyntaxError: invalid syntax
>>> D=np.array([[2,3],[3,4]])
>>> linalg.inv(D)
array([[-4., 3.],
[ 3., -2.]])
>>> D=np.array([[1,2],[3,4]])
>>> linalg.inv(D)
array([[-2. , 1. ],
[ 1.5, -0.5]])
>>> np.dot(D,linalg.inv(D))
array([[ 1.00000000e+00, 1.11022302e-16],
[ 0.00000000e+00, 1.00000000e+00]])
>>> D
array([[1, 2],
[3, 4]])
>>> I=np.random.randint(0,2,(2,3))
>>> I
array([[0, 1, 0],
[1, 1, 0]])
>>> linalg.pinv(I)
array([[ -1.00000000e+00, 1.00000000e+00],
[ 1.00000000e+00, -1.66533454e-16],
[ 0.00000000e+00, 0.00000000e+00]])
>>> np.dot(I,linalg.pinv(I))
array([[ 1.00000000e+00, -1.66533454e-16],
[ -6.66133815e-16, 1.00000000e+00]])
>>> linalg.matrix_rank(I)
2
>>> H=np.random.randint(0,2,(2,3))
>>> H
array([[1, 0, 1],
[0, 0, 1]])
>>> linalg.matrix_rank(H)
2
>>> A=np.array([[1,2],[-2,1]])
>>> B=np.array([[3],[-1]])
>>> linalg.solve(A,B)
array([[ 1.],
[ 1.]])
>>> A=np.random.randint(0,10,(3,2))
>>> A
array([[1, 6],
[1, 0],
[3, 3]])
>>> B=np.random.randint(0,10,(3,1))
>>> B
array([[9],
[3],
[2]])
>>> linalg.lstsq(A,B)
(array([[-0.33333333],
[ 1.44444444]]), array([ 13.33333333]), 2, array([ 7.11839646,
2.30833964]))
>>> J=np.random.randint(0,11,(3,4))
>>> J
array([[ 8, 8, 9, 3],
[10, 3, 1, 6],
[ 3, 3, 5, 6]])
>>> (U,S,V)=linalg.svd(J)
>>> U
array([[ 0.72678412, 0.56234038, -0.39440859],
[ 0.54828698, -0.82084153, -0.16000177],
[ 0.4137224 , 0.09996235, 0.9048985 ]])
>>> S
array([ 19.49393292, 6.81999781, 4.05884333])
>>> V
array([[ 0.64319037, 0.44630815, 0.46978494, 0.40794275],
[-0.4999716 , 0.34253465, 0.69501982, -0.38684088],
[-0.50275181, -0.22680809, 0.20075016, 0.80962836],
[-0.28909369, 0.79500764, -0.50591395, 0.16863798]])
>>> np.dot(U.transpose(),U)
array([[ 1.00000000e+00, 4.85722573e-17, 0.00000000e+00],
[ 4.85722573e-17, 1.00000000e+00, -1.11022302e-16],
[ 0.00000000e+00, -1.11022302e-16, 1.00000000e+00]])
>>> np.dot(V.transpose(),V)
array([[ 1.00000000e+00, 3.05311332e-16, 1.38777878e-16,
-1.94289029e-16],
[ 3.05311332e-16, 1.00000000e+00, -2.77555756e-16,
1.38777878e-16],
[ 1.38777878e-16, -2.77555756e-16, 1.00000000e+00,
1.66533454e-16],
[ -1.94289029e-16, 1.38777878e-16, 1.66533454e-16,
1.00000000e+00]])
>>> D=np.hstack([np.diag(S),np.zeros((3,1))])
>>> D
array([[ 19.49393292, 0. , 0. , 0. ],
[ 0. , 6.81999781, 0. , 0. ],
[ 0. , 0. , 4.05884333, 0. ]])
>>> np.dot(np.dot(U,D),V)
array([[ 8., 8., 9., 3.],
[ 10., 3., 1., 6.],
[ 3., 3., 5., 6.]])
>>> L=np.matrix([[6,-3,-10],[0,2,-2],[2,-1,-5]])
>>> L
matrix([[ 6, -3, -10],
[ 0, 2, -2],
[ 2, -1, -5]])
>>> V,P=linalg.eig(L)
>>> V
array([-2.88089912, 4.24581024, 1.63508888])
>>> P
matrix([[ 0.76017728, 0.95227747, -0.73605421],
[ 0.24634855, -0.20299732, -0.66592894],
[ 0.60120121, 0.22794673, -0.12150244]])
>>> P*np.diag(V)*linalg.inv(P)
matrix([[ 6.00000000e+00, -3.00000000e+00, -1.00000000e+01],
[ 2.55351296e-15, 2.00000000e+00, -2.00000000e+00],
[ 2.00000000e+00, -1.00000000e+00, -5.00000000e+00]])
>>> L0=L.copy()
>>> L1=L.copy()
>>> L0.sort(0)
>>> L0
matrix([[ 0, -3, -10],
[ 2, -1, -5],
[ 6, 2, -2]])
>>> L1.sort(1)
>>> L1
matrix([[-10, -3, 6],
[ -2, 0, 2],
[ -5, -1, 2]])
>>> np.linspace(1,3,4)
array([ 1. , 1.66666667, 2.33333333, 3. ])
>>> np.meshgrid([1,2,4],[2,4,5])
[array([[1, 2, 4],
[1, 2, 4],
[1, 2, 4]]), array([[2, 2, 2],
[4, 4, 4],
[5, 5, 5]])]
>>> np.mgrid[0:9,0:6]
array([[[0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1],
[2, 2, 2, 2, 2, 2],
[3, 3, 3, 3, 3, 3],
[4, 4, 4, 4, 4, 4],
[5, 5, 5, 5, 5, 5],
[6, 6, 6, 6, 6, 6],
[7, 7, 7, 7, 7, 7],
[8, 8, 8, 8, 8, 8]],
[[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5]]])
>>> np.ogrid[0:3,0:4]
[array([[0],
[1],
[2]]), array([[0, 1, 2, 3]])]
>>> np.concatenate((L0,L1),0)
matrix([[ 0, -3, -10],
[ 2, -1, -5],
[ 6, 2, -2],
[-10, -3, 6],
[ -2, 0, 2],
[ -5, -1, 2]])
>>> np.concatenate((L0,L1),1)
matrix([[ 0, -3, -10, -10, -3, 6],
[ 2, -1, -5, -2, 0, 2],
[ 6, 2, -2, -5, -1, 2]])
>>> np.tile(L0,(2,3))
matrix([[ 0, -3, -10, 0, -3, -10, 0, -3, -10],
[ 2, -1, -5, 2, -1, -5, 2, -1, -5],
[ 6, 2, -2, 6, 2, -2, 6, 2, -2],
[ 0, -3, -10, 0, -3, -10, 0, -3, -10],
[ 2, -1, -5, 2, -1, -5, 2, -1, -5],
[ 6, 2, -2, 6, 2, -2, 6, 2, -2]])
>>> F=np.array([[1,2,3]])
>>> F
array([[1, 2, 3]])
>>> F.squeeze()
array([1, 2, 3])
>>> F=np.array([[1],[2],[3]])
>>> F
array([[1],
[2],
[3]])
>>> F.squeeze()
array([1, 2, 3])