Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Python_giris.ipynb",
"version": "0.3.2",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"[View in Colaboratory](https://colab.research.google.com/gist/bulentsiyah/2cc7b7855e5fb3776f519c35c07ebaa9/python_giris.ipynb)"
]
},
{
"metadata": {
"id": "hvuqpFFysuFt",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 198
},
"outputId": "171bf8f2-6645-4601-afe1-7a6dae4ef27f"
},
"cell_type": "code",
"source": [
"\"\"\"##Temel veri tipleri\n",
"Çoğu dil gibi, Python da tamsayılar, floats, boole ve dizeleri (strings) içeren bir dizi temel türe sahiptir. Bu veri türleri, diğer programlama dillerinde olduğu gibi biryapıya sahiptir Python'da da.\n",
"\n",
"**Sayılar: **Tamsayılar (integers) ve floats diğer dillerde olduğuyla aynı, beklediğiniz gibi çalışır:\n",
"\"\"\"\n",
"\n",
"x = 3\n",
"print(type(x)) # ekrana yazdır \"<class 'int'>\"\n",
"print(x) # ekrana yazdır \"3\"\n",
"print(x + 1) # Toplama; ekrana yazdır \"4\"\n",
"print(x - 1) # Çıkarma; ekrana yazdır \"2\"\n",
"print(x * 2) # Çarpma; ekrana yazdır \"6\"\n",
"print(x ** 2) # Üstel; ekrana yazdır \"9\"\n",
"x += 1\n",
"print(x) # ekrana yazdır \"4\"\n",
"x *= 2\n",
"print(x) # ekrana yazdır \"8\"\n",
"y = 2.5\n",
"print(type(y)) # ekrana yazdır \"<class 'float'>\"\n",
"print(y, y + 1, y * 2, y ** 2) # ekrana yazdır \"2.5 3.5 5.0 6.25\""
],
"execution_count": 1,
"outputs": [
{
"output_type": "stream",
"text": [
"<type 'int'>\n",
"3\n",
"4\n",
"2\n",
"6\n",
"9\n",
"4\n",
"8\n",
"<type 'float'>\n",
"(2.5, 3.5, 5.0, 6.25)\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "o7x6mLIrtYCA",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 108
},
"outputId": "41eaf2b4-906c-40df-c690-e873d99a6c8c"
},
"cell_type": "code",
"source": [
"\"\"\"**Booleanlar:** Python, tüm olağan operatörleri Boole mantığı için kullanır, ancak sembollerden ziyade İngilizce kelimeler kullanır (&&, ||, vb.):\"\"\"\n",
"\n",
"t = True\n",
"f = False\n",
"print(type(t)) # ekrana yazdır \"<class 'bool'>\"\n",
"print(t and f) # Mantık VE kapısı; ekrana yazdır \"False\"\n",
"print(t or f) # Mantık VEYA kapısı; ekrana yazdır \"True\"\n",
"print(not t) # Mantık DEĞİL kapısı; ekrana yazdır \"False\"\n",
"print(t != f) # Mantık DIŞLAYAN VEYA kapısı; ekrana yazdır \"True\""
],
"execution_count": 2,
"outputs": [
{
"output_type": "stream",
"text": [
"<type 'bool'>\n",
"False\n",
"True\n",
"False\n",
"True\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "aXCgMIdUt-rK",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 180
},
"outputId": "85829aae-63be-4d30-bcaa-3268bfd2482c"
},
"cell_type": "code",
"source": [
"\"\"\"**Dizile (Strings): **Python kolaylıkla strings işlemleri yapabilirsiniz.\"\"\"\n",
"\n",
"hello = 'hello' # dizi değişkenleri tek tırnak içinde kullanılır\n",
"world = \"world\" # ya da çift tırnak :)\n",
"print(hello) # ekrana yazdır \"hello\"\n",
"print(len(hello)) # dizi uzunluğu; ekrana yazdır \"5\"\n",
"hw = hello + ' ' + world # iki dizinn bağlanması\n",
"print(hw) # ekrana yazdır \"hello world\"\n",
"hw12 = '%s %s %d' % (hello, world, 12) # farklı formattaki dizilerin birlikte yazdırılması\n",
"print(hw12) # ekrana yazdır \"hello world 12\"\n",
"\n",
"s = \"hello\"\n",
"print(s.capitalize()) # Baş harfi büyük dizi; ekrana yazdır \"Hello\"\n",
"print(s.upper()) # Dizinin tüm harflerini büyük yazmak; ekrana yazdır \"HELLO\"\n",
"print(s.rjust(7)) # sağa yaslı yazmak ekrana yazdır \" hello\"\n",
"print(s.center(7)) # Center a ortalayarak yazmak; ekrana yazdır \" hello \"\n",
"print(s.replace('l', '(ell)')) # Bir alt dizinin tüm örneklerini bir diğeriyle değiştirin;\n",
" # ekrana yazdır \"he(ell)(ell)o\""
],
"execution_count": 3,
"outputs": [
{
"output_type": "stream",
"text": [
"hello\n",
"5\n",
"hello world\n",
"hello world 12\n",
"Hello\n",
"HELLO\n",
" hello\n",
" hello \n",
"he(ell)(ell)o\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "VlUpCEBDuE84",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 198
},
"outputId": "cb4d1a80-b39c-4877-d513-8f0201efa796"
},
"cell_type": "code",
"source": [
"\"\"\"Python birkaç yerleşik container türü içerir: listeler, sözlükler, kümeler ve kopyalar.\n",
"\n",
"\n",
"**Listeler**\n",
"Bir liste, bir dizinin Python karşılığıdır, ancak yeniden boyutlandırılabilir ve farklı türde öğeler içerebilir:\n",
"\"\"\"\n",
"\n",
"xs = [3, 1, 2] # Bir liste tanımlamak\n",
"print(xs, xs[2]) # ekrana yazdır \"[3, 1, 2] 2\"\n",
"xs.append('bar') # listeye bir eleman ekleme\n",
"print(xs) # ekrana yazdır \"[3, 1, 'foo', 'bar']\"\n",
"x = xs.pop() # Listenin son elemanını kaldırın ve geri alın.\n",
"print(x, xs) # ekrana yazdır \"bar [3, 1, 'foo']\"\n",
"\n",
"\"\"\"**Slicing:** Liste öğelerine birer birer erişmeye ek olarak, Python alt listelere erişmek için kısa bir sözdizimi sağlar; alicing olarak bilinir:\"\"\"\n",
"\n",
"nums = list(range(5)) # range, tamsayıların bir listesini oluşturan yerleşik bir işlevdir.\n",
"print(nums) # ekrana yazdır \"[0, 1, 2, 3, 4]\"\n",
"print(nums[2:4]) # Endeks 2'den 4'e (özel) bir dilim alır; ekrana yazdır \"[2, 3]\"\n",
"print(nums[2:]) # Endeks 2'den dizinin sonuna (özel) bir dilim alır; ekrana yazdır \"[2, 3, 4]\"\n",
"print(nums[:2]) # Endeks başlangıçtan 2'ye (özel) bir dilim alır; ekrana yazdır \"[0, 1]\"\n",
"print(nums[:]) # Endeks listenin tamamını alır; ekrana yazdır \"[0, 1, 2, 3, 4]\"\n",
"print(nums[:-1]) # Endeks 2'den 4'e (özel) bir dilim alın;; ekrana yazdır \"[0, 1, 2, 3]\"\n",
"nums[2:4] = [8, 9] # Bir dilim için yeni bir alt liste atayın.\n",
"print(nums) # ekrana yazdır \"[0, 1, 8, 9, 4]\"\n"
],
"execution_count": 4,
"outputs": [
{
"output_type": "stream",
"text": [
"([3, 1, 2], 2)\n",
"[3, 1, 2, 'bar']\n",
"('bar', [3, 1, 2])\n",
"[0, 1, 2, 3, 4]\n",
"[2, 3]\n",
"[2, 3, 4]\n",
"[0, 1]\n",
"[0, 1, 2, 3, 4]\n",
"[0, 1, 2, 3]\n",
"[0, 1, 8, 9, 4]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "kUUUrXT911u7",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 72
},
"outputId": "0cd77773-9acb-4790-ffc1-8cea3f6222d0"
},
"cell_type": "code",
"source": [
"\"\"\"**Döngüler:** Bir listenin elemanlarını şu şekilde değiştirebilirsiniz:\"\"\"\n",
"\n",
"animals = ['cat', 'dog', 'monkey']\n",
"for animal in animals:\n",
" print(animal)"
],
"execution_count": 5,
"outputs": [
{
"output_type": "stream",
"text": [
"cat\n",
"dog\n",
"monkey\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "sFxiFDRV1543",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 72
},
"outputId": "ce09fb6d-1a4c-43f1-ec11-542219d1d68c"
},
"cell_type": "code",
"source": [
"\"\"\"Döngü gövdesindeki her bir öğenin dizinine erişmek istiyorsanız, yerleşik numaralandırma işlevini kullanın: `enumerate`\"\"\"\n",
"\n",
"animals = ['cat', 'dog', 'monkey']\n",
"for idx, animal in enumerate(animals):\n",
" print('#%d: %s' % (idx + 1, animal))"
],
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"text": [
"#1: cat\n",
"#2: dog\n",
"#3: monkey\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "7LW16xpm192E",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 72
},
"outputId": "11944d53-f9d7-41ac-bc6d-c70326092200"
},
"cell_type": "code",
"source": [
"\"\"\"**Liste anlama:** Programlama yaparken, sıklıkla bir veri türünü diğerine dönüştürmek istiyoruz. Basit bir örnek olarak, kare sayılarını hesaplayan aşağıdaki kodu dikkate alın:\"\"\"\n",
"\n",
"nums = [0, 1, 2, 3, 4]\n",
"squares = []\n",
"for x in nums:\n",
" squares.append(x ** 2)\n",
"print(squares) # ekrana yazdır [0, 1, 4, 9, 16]\n",
"\n",
"nums = [0, 1, 2, 3, 4]\n",
"squares = [x ** 2 for x in nums]\n",
"print(squares) # ekrana yazdır [0, 1, 4, 9, 16]\n",
"\n",
"nums = [0, 1, 2, 3, 4]\n",
"even_squares = [x ** 2 for x in nums if x % 2 == 0]\n",
"print(even_squares) # ekrana yazdır \"[0, 4, 16]\""
],
"execution_count": 7,
"outputs": [
{
"output_type": "stream",
"text": [
"[0, 1, 4, 9, 16]\n",
"[0, 1, 4, 9, 16]\n",
"[0, 4, 16]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "VZt25GVb2N8m",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 126
},
"outputId": "53342621-a615-4438-ffd6-194dcac67ca4"
},
"cell_type": "code",
"source": [
"\"\"\"### **Sözlükler**\n",
"Java'daki bir haritaya (`Map`) veya Javascript'teki bir nesneye benzer bir sözlük depoları (anahtar, değer) çiftleri. Bunu şu şekilde kullanabilirsiniz:\n",
"\"\"\"\n",
"\n",
"d = {'cat': 'cute', 'dog': 'furry'} # Yeni bir sözlük oluştur.\n",
"print(d['cat']) # Sözlükten bir giriş alın; ekrana yazdır \"cute\"\n",
"print('cat' in d) # bir sözlüğün bir anahtarı olup olmadığını kontrol edin; ekrana yazdır \"True\"\n",
"d['fish'] = 'wet' # Bir giriş ayarla\n",
"print(d['fish']) # ekrana yazdır \"wet\"\n",
"# ekrana yazdır(d['monkey']) # KeyError: 'monkey' d sözlüğünün bir anahtarı değildir\n",
"print(d.get('monkey', 'N/A')) # Varsayılan olarak bir öğe al; ekrana yazdır \"N/A\"\n",
"print(d.get('fish', 'N/A')) # Varsayılan olarak bir öğe al; ekrana yazdır \"wet\"\n",
"del d['fish'] # Bir öğeden bir sözlüğü kaldır\n",
"print(d.get('fish', 'N/A')) # \"fish\" artık bir anahtar değil; ekrana yazdır \"N/A\""
],
"execution_count": 9,
"outputs": [
{
"output_type": "stream",
"text": [
"cute\n",
"True\n",
"wet\n",
"N/A\n",
"wet\n",
"N/A\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "mrALZUmm2cVq",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 72
},
"outputId": "83880f8b-9d48-47e7-d4da-4d45f95479c3"
},
"cell_type": "code",
"source": [
"\"\"\"**Döngüler:** Bir sözlükteki anahtarlar üzerinden tekrarlamak kolaydır:\"\"\"\n",
"\n",
"d = {'person': 2, 'cat': 4, 'spider': 8}\n",
"for animal in d:\n",
" legs = d[animal]\n",
" print('A %s has %d legs' % (animal, legs))"
],
"execution_count": 10,
"outputs": [
{
"output_type": "stream",
"text": [
"A person has 2 legs\n",
"A spider has 8 legs\n",
"A cat has 4 legs\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "AG7yycRl2y-h",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 72
},
"outputId": "4bdd6f08-cfb7-498d-b140-80f4b266b5bc"
},
"cell_type": "code",
"source": [
"\"\"\"Anahtarlara ve bunlara karşılık gelen değerlere erişmek istiyorsanız, **`item` **yöntemini kullanın:\"\"\"\n",
"\n",
"d = {'person': 2, 'cat': 4, 'spider': 8}\n",
"for animal, legs in d.items():\n",
" print('A %s has %d legs' % (animal, legs))"
],
"execution_count": 11,
"outputs": [
{
"output_type": "stream",
"text": [
"A person has 2 legs\n",
"A spider has 8 legs\n",
"A cat has 4 legs\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "nSLLFsTU3DOR",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "ff71e1cf-5dc2-4bae-b0ae-e452fe478c1d"
},
"cell_type": "code",
"source": [
"\n",
"\"\"\"**Sözlük kavrayışları:** Bunlar liste kavramalarına benzer, ancak sözlükleri kolayca oluşturmanıza olanak tanır.\n",
"Örneğin:\n",
"\"\"\"\n",
"\n",
"nums = [0, 1, 2, 3, 4]\n",
"even_num_to_square = {x: x ** 2 for x in nums if x % 2 == 0}\n",
"print(even_num_to_square) # ekrana yazdır \"{0: 0, 2: 4, 4: 16}\""
],
"execution_count": 12,
"outputs": [
{
"output_type": "stream",
"text": [
"{0: 0, 2: 4, 4: 16}\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "whYgMfW63Eye",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 126
},
"outputId": "d2645287-d882-41e4-d87c-4cce09eaa97e"
},
"cell_type": "code",
"source": [
"\"\"\"### Setler\n",
"Bir set, farklı unsurların sırasız bir koleksiyonudur. Basit bir örnek olarak, aşağıdakileri dikkate alın:\n",
"\"\"\"\n",
"\n",
"animals = {'cat', 'dog'}\n",
"print('cat' in animals) # Bir öğenin bir kümede olup olmadığını kontrol edin; ekrana yazdır \"True\"\n",
"print('fish' in animals) # ekrana yazdır \"False\"\n",
"animals.add('fish') # Bir kümeye öğe ekle\n",
"print('fish' in animals) # ekrana yazdır \"True\"\n",
"print(len(animals)) # Bir kümedeki eleman sayısı; ekrana yazdır \"3\"\n",
"animals.add('cat') # Zaten içinde olan bir eleman eklemek hiçbir şey değiştirmez.\n",
"print(len(animals)) # ekrana yazdır \"3\"\n",
"animals.remove('cat') # Bir öğeyi bir kümeden kaldır\n",
"print(len(animals)) # ekrana yazdır \"2\""
],
"execution_count": 13,
"outputs": [
{
"output_type": "stream",
"text": [
"True\n",
"False\n",
"True\n",
"3\n",
"3\n",
"2\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "DWmFmBgS3H3W",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 72
},
"outputId": "1f4e8e67-86e6-4a04-dccd-87d129cea59a"
},
"cell_type": "code",
"source": [
"\"\"\"**Döngüler:** Bir küme üzerinde yineleme, bir liste üzerinde yinelemekle aynı sözdizimine sahiptir; Ancak kümeler sırasız olduğundan, kümenin öğelerini ziyaret ettiğiniz sırayla ilgili varsayımlarda bulunamazsınız:\"\"\"\n",
"\n",
"animals = {'cat', 'dog', 'fish'}\n",
"for idx, animal in enumerate(animals):\n",
" print('#%d: %s' % (idx + 1, animal))"
],
"execution_count": 14,
"outputs": [
{
"output_type": "stream",
"text": [
"#1: fish\n",
"#2: dog\n",
"#3: cat\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "b7SOl_0S3iHF",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "c1a5bbf6-6521-4c29-b597-8e4eb6598951"
},
"cell_type": "code",
"source": [
"\"\"\"Listeler ve sözlükler gibi setler kullanarak kolayca set oluşturabiliriz:\"\"\"\n",
"\n",
"from math import sqrt\n",
"nums = {int(sqrt(x)) for x in range(30)}\n",
"print(nums) # ekrana yazdır \"{0, 1, 2, 3, 4, 5}\""
],
"execution_count": 15,
"outputs": [
{
"output_type": "stream",
"text": [
"set([0, 1, 2, 3, 4, 5])\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "rchb-6lG3jes",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 72
},
"outputId": "af468b9f-1bec-489b-8dc1-fc694cabdf0a"
},
"cell_type": "code",
"source": [
"\"\"\"### Tuples (tanımlama grupları)\n",
"Bir tuple (değişmez) sıralı bir değer listesidir. Bir tuple birçok yönden bir listeye benzer; En önemli farklılıklardan biri, sözlüklerin anahtar kelimeler olarak ve kümelerin öğeleri olarak kullanılabilmesidir; İşte basit bir örnek:\n",
"\"\"\"\n",
"\n",
"d = {(x, x + 1): x for x in range(10)} # Tuple anahtarları ile bir sözlük oluştur\n",
"t = (5, 6) # Bir TUPLE oluştur\n",
"print(type(t)) # ekrana yazdır \"<class 'tuple'>\"\n",
"print(d[t]) # ekrana yazdır \"5\"\n",
"print(d[(1, 2)]) # ekrana yazdır \"1\""
],
"execution_count": 16,
"outputs": [
{
"output_type": "stream",
"text": [
"<type 'tuple'>\n",
"5\n",
"1\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "UUojN3FG3rAU",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 108
},
"outputId": "309071cb-8338-44f6-fc38-a0d8cee8d963"
},
"cell_type": "code",
"source": [
"\"\"\"### Fonksiyonlar\n",
"Python işlevleri, def anahtar sözcüğünü kullanarak tanımlanır. Örneğin:\n",
"\"\"\"\n",
"\n",
"def sign(x):\n",
" if x > 0:\n",
" return 'positive'\n",
" elif x < 0:\n",
" return 'negative'\n",
" else:\n",
" return 'zero'\n",
"\n",
"for x in [-1, 0, 1]:\n",
" print(sign(x))\n",
"\n",
"def hello(name, loud=False):\n",
" if loud:\n",
" print('HELLO, %s!' % name.upper())\n",
" else:\n",
" print('Hello, %s' % name)\n",
"\n",
"hello('Bob') # ekrana yazdır \"Hello, Bob\"\n",
"hello('Fred', loud=True) # ekrana yazdır \"HELLO, FRED!\""
],
"execution_count": 17,
"outputs": [
{
"output_type": "stream",
"text": [
"negative\n",
"zero\n",
"positive\n",
"Hello, Bob\n",
"HELLO, FRED!\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "fwa7uzLK4BBN",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 53
},
"outputId": "6d23c8f9-fdd2-49b4-f9d1-bbe1cca2a9e1"
},
"cell_type": "code",
"source": [
"\n",
"\"\"\"### Sınıflar\n",
"Python'daki sınıfları tanımlamak için sözdizimi basittir:\n",
"\"\"\"\n",
"\n",
"class Greeter(object):\n",
"\n",
" # Kurma işlemi\n",
" def __init__(self, name):\n",
" self.name = name # Bir değişken oluştur\n",
"\n",
" # Instance method-Örnek Yöntemi\n",
" def greet(self, loud=False):\n",
" if loud:\n",
" print('HELLO, %s!' % self.name.upper())\n",
" else:\n",
" print('Hello, %s' % self.name)\n",
"\n",
"g = Greeter('Fred') # Greeter sınıfının bir örneğini oluşturmak\n",
"g.greet() # instance method çağır; ekrana yazdır \"Hello, Fred\"\n",
"g.greet(loud=True) # instance method çağır; ekrana yazdır \"HELLO, FRED!\"\n"
],
"execution_count": 18,
"outputs": [
{
"output_type": "stream",
"text": [
"Hello, Fred\n",
"HELLO, FRED!\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "wVxMVTCq4Me2",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 126
},
"outputId": "1ac6d4f7-d0d3-4017-abd6-d2eb07cc4ad8"
},
"cell_type": "code",
"source": [
"\"\"\"## NumPy\n",
"Numpy, Python'da bilimsel bilgi işlem için çekirdek kütüphanedir. Yüksek performanslı çok boyutlu bir dizi nesnesi ve bu dizilerle çalışmak için araçlar sağlar. MATLAB ile önceden tanışıyorsanız, bu tutorial Numpy ile çalışmaya başlamak için çok anlaşılır olacaktır.\n",
"\n",
"### Diziler\n",
"Bir numpy dizisi, hepsi aynı türden bir değerler grididir ve negatif olmayan tamsayılar için bir tuple indekslenir. Boyutların sayısı dizinin sırasıdır; Bir dizinin şekli, her boyut boyunca dizinin boyutunu veren tamsayıların bir tuple'dır.\n",
"\n",
"İç içe Python listelerinden `numpy` dizilerini ve köşeli parantezleri kullanarak erişim öğelerini başlatabiliriz:\n",
"\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"a = np.array([1, 2, 3]) # 1 uzunluklu bir dizi vektör oluştur\n",
"print(type(a)) # ekrana yazdır \"<class 'numpy.ndarray'>\"\n",
"print(a.shape) # ekrana yazdır \"(3,)\"\n",
"print(a[0], a[1], a[2]) # ekrana yazdır \"1 2 3\"\n",
"a[0] = 5 # Dizinin bir elemanını değiştir\n",
"print(a) # ekrana yazdır \"[5, 2, 3]\"\n",
"\n",
"b = np.array([[1,2,3],[4,5,6]]) # 1 uzunluklu iki dizi vektör oluştu\n",
"print(b.shape) # ekrana yazdır \"(2, 3)\"\n",
"print(b[0, 0], b[0, 1], b[1, 0]) # ekrana yazdır \"1 2 4\""
],
"execution_count": 19,
"outputs": [
{
"output_type": "stream",
"text": [
"<type 'numpy.ndarray'>\n",
"(3,)\n",
"(1, 2, 3)\n",
"[5 2 3]\n",
"(2, 3)\n",
"(1, 2, 4)\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "kcWxCls74fks",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 180
},
"outputId": "76748827-6e1e-4f8c-f301-afcde9a035b9"
},
"cell_type": "code",
"source": [
"\n",
"\"\"\"Numpy ayrıca dizi oluşturmak için birçok işlev sunar:\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"a = np.zeros((2,2)) # 0'lardan oluşan bir dizi oluştur\n",
"print(a) # ekrana yazdır \"[[ 0. 0.]\n",
" # [ 0. 0.]]\"\n",
"\n",
"b = np.ones((1,2)) # 1lerden oluşan bir dizi oluştur\n",
"print(b) # ekrana yazdır \"[[ 1. 1.]]\"\n",
"\n",
"c = np.full((2,2), 7) # Sabit bir sayıdan oluşan dizi oluştır.\n",
"print(c) # ekrana yazdır \"[[ 7. 7.]\n",
" # [ 7. 7.]]\"\n",
"\n",
"d = np.eye(2) # Birim matris oluşturma\n",
"print(d) # ekrana yazdır \"[[ 1. 0.]\n",
" # [ 0. 1.]]\"\n",
"\n",
"e = np.random.random((2,2)) # Crastgele değerlerden oluşan bir matris tanımlar\n",
"print(e) # Rastgele matris \"[[ 0.91940167 0.08143941]\n",
" # [ 0.68744134 0.87236687]]\"\n"
],
"execution_count": 20,
"outputs": [
{
"output_type": "stream",
"text": [
"[[0. 0.]\n",
" [0. 0.]]\n",
"[[1. 1.]]\n",
"[[7 7]\n",
" [7 7]]\n",
"[[1. 0.]\n",
" [0. 1.]]\n",
"[[0.14419935 0.64611301]\n",
" [0.55502467 0.1012483 ]]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "Y6hpMBoE4irr",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 108
},
"outputId": "507b0260-3966-4add-91d0-649454c9bdfd"
},
"cell_type": "code",
"source": [
"\"\"\"## Dizi endeksleme (Array Indexing)\n",
"Numpy dizileri dizine eklemek için çeşitli yollar sunar.\n",
"\n",
"**Slicing:** Python listelerine benzer şekilde, numpy dizileri parçalanabilir. Diziler çok boyutlu olabileceğinden, dizinin her boyutu için bir slice belirtmelisiniz:\n",
"\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"# rank=2 ve (3,4) boyutlu matris \n",
"# [[ 1 2 3 4]\n",
"# [ 5 6 7 8]\n",
"# [ 9 10 11 12]]\n",
"a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])\n",
"\n",
"# 2 satır ve 2 sütundan oluşan alt matrisi oluşturmak için slicing kullanımı; b dizinin boyutudur (2, 2):\n",
"# [[2 3]\n",
"# [6 7]]\n",
"b = a[:2, 1:3]\n",
"\n",
"print(a)\n",
"\n",
"print(b) # ekrana yazdır"
],
"execution_count": 21,
"outputs": [
{
"output_type": "stream",
"text": [
"[[ 1 2 3 4]\n",
" [ 5 6 7 8]\n",
" [ 9 10 11 12]]\n",
"[[2 3]\n",
" [6 7]]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "ImrgRB5F4mxW",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 126
},
"outputId": "960499a5-8c65-46bc-c9e5-bfa5e7e20c12"
},
"cell_type": "code",
"source": [
"\"\"\"Ayrıca, tamsayı indekslemeyi slice indekslemeyle karıştırabilirsiniz. Ancak, bunu yapmak orijinal diziden daha düşük bir sıra dizisi verecektir. Bunun MATLAB'ın dizi slicing işleme biçiminden oldukça farklı olduğunu unutmayın:\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"# rank=2 ve (3,4) boyutlu matris \n",
"# [[ 1 2 3 4]\n",
"# [ 5 6 7 8]\n",
"# [ 9 10 11 12]]\n",
"a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])\n",
"\n",
"# Dizinin özellik ve değerlerini çekmenin yolu\n",
"row_r1 = a[1, :] # (rank 1) a dizisinin 2. satırı\n",
"row_r2 = a[1:2, :] # (rank 2) a dizisinin 2. satırı\n",
"print(row_r1, row_r1.shape) # ekrana yazdır \"[5 6 7 8] (4,)\"\n",
"print(row_r2, row_r2.shape) # ekrana yazdır \"[[5 6 7 8]] (1, 4)\"\n",
"\n",
"# Aynı ayrımı sütunlar içinde yapabiliriz.\n",
"col_r1 = a[:, 1]\n",
"col_r2 = a[:, 1:2]\n",
"print(col_r1, col_r1.shape) # ekrana yazdır \"[ 2 6 10] (3,)\"\n",
"print(col_r2, col_r2.shape) # ekrana yazdır \"[[ 2]\n",
" # [ 6]\n",
" # [10]] (3, 1)\""
],
"execution_count": 22,
"outputs": [
{
"output_type": "stream",
"text": [
"(array([5, 6, 7, 8]), (4,))\n",
"(array([[5, 6, 7, 8]]), (1, 4))\n",
"(array([ 2, 6, 10]), (3,))\n",
"(array([[ 2],\n",
" [ 6],\n",
" [10]]), (3, 1))\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "Mlecocpd4sW3",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 53
},
"outputId": "811a9f3a-856d-4d19-9d09-c3d3ad6511b6"
},
"cell_type": "code",
"source": [
"\"\"\"**Tamsayı dizi indeksleme:** Slicing kullanarak numpy dizileri indekslediğinizde, sonuç dizi görünümü her zaman özgün dizinin bir alt dizesi olacaktır. Tam tersine, tamsayı dizisi indeksleme, başka bir diziden verileri kullanarak rasgele diziler oluşturmanıza olanak sağlar. İşte bir örnek:\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"a = np.array([[1,2], [3, 4], [5, 6]])\n",
"\n",
"# Tam sayı dizisi indeksleme örneği.\n",
"# Dönen dizi 3 uzunluklu olmalı\n",
"print(a[[0, 1, 2], [0, 1, 0]]) # ekrana yazdır \"[1 4 5]\"\n",
"\n",
"# Yukarıdaki örnekle aynı şeyi verir.\n",
"print(np.array([a[0, 0], a[1, 1], a[2, 0]])) # ekrana yazdır \"[1 4 5]\""
],
"execution_count": 23,
"outputs": [
{
"output_type": "stream",
"text": [
"[1 4 5]\n",
"[1 4 5]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "zL3bbXly4tvj",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 180
},
"outputId": "936fdec6-c31c-49ee-ee1f-bfb059e73c7a"
},
"cell_type": "code",
"source": [
"\"\"\"Tamsayı dizi indekslemeyle ilgili kullanışlı bir numara, bir matrisin her satırındaki bir öğeyi seçer veya dönüştürür:\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"# Elemanlarını bizim seçtiğimiz 3x3 bir matris oluşturma\n",
"a = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])\n",
"\n",
"print(a) # ekrana yazdır \"array([[ 1, 2, 3],\n",
" # [ 4, 5, 6],\n",
" # [ 7, 8, 9],\n",
" # [10, 11, 12]])\"\n",
"\n",
"# Bir dizi oluştur\n",
"b = np.array([0, 2, 0, 1])\n",
"\n",
"# İndeksleri kullanarak her satırdaki bir elemanı seçin (b'den).\n",
"print(a[np.arange(4), b]) # ekrana yazdır \"[ 1 6 7 11]\"\n",
"\n",
"# b'deki indeksleri kullanarak her bir satırdaki bir elemanı değiştiriniz.\n",
"a[np.arange(4), b] += 10\n",
"\n",
"print(a) # ekrana yazdır \"array([[11, 2, 3],\n",
" # [ 4, 5, 16],\n",
" # [17, 8, 9],\n",
" # [10, 21, 12]])"
],
"execution_count": 24,
"outputs": [
{
"output_type": "stream",
"text": [
"[[ 1 2 3]\n",
" [ 4 5 6]\n",
" [ 7 8 9]\n",
" [10 11 12]]\n",
"[ 1 6 7 11]\n",
"[[11 2 3]\n",
" [ 4 5 16]\n",
" [17 8 9]\n",
" [10 21 12]]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "BthnIVZd4yCg",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 108
},
"outputId": "d8261523-2e5b-4315-fbf8-0f00d51075bb"
},
"cell_type": "code",
"source": [
"\"\"\"**Boole dizisi indeksleme:** Boole dizisi dizini, bir dizinin rasgele öğelerini seçmenizi sağlar. Sıklıkla bu tür bir endeksleme, bir koşulu karşılayan bir dizinin elemanlarını seçmek için kullanılır. İşte bir örnek:\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"a = np.array([[1,2], [3, 4], [5, 6]])\n",
"\n",
"bool_idx = (a > 2) # 2'den büyük olan değerleri bulun;\n",
" # a matrisinden 2'den büyük değerleri True olmayanları False olarak döndürür \n",
"\n",
"print(bool_idx) # ekrana yazdır \"[[False False]\n",
" # [ True True]\n",
" # [ True True]]\"\n",
"\n",
"# bool_idx değerlerini sayısal olarak dönmesini sağlar.\n",
"print(a[bool_idx]) # ekrana yazdır \"[3 4 5 6]\"\n",
"\n",
"# Aynı şeyi bu şekilde de yapabilirdik.\n",
"print(a[a > 2]) # ekrana yazdır \"[3 4 5 6]\""
],
"execution_count": 25,
"outputs": [
{
"output_type": "stream",
"text": [
"[[False False]\n",
" [ True True]\n",
" [ True True]]\n",
"[3 4 5 6]\n",
"[3 4 5 6]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "OyxEhuFr409n",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 72
},
"outputId": "1a19705c-378c-4e60-ec50-6c2970ea670b"
},
"cell_type": "code",
"source": [
"\n",
"\"\"\"## Veri tipleri\n",
"Her numpy dizisi aynı türden bir eleman grididır. Numpy, diziler oluşturmak için kullanabileceğiniz büyük bir sayısal veri kümesi sağlar. Numpy, bir dizi oluşturduğunuzda bir veri türünü tahmin etmeye çalışır, ancak dizileri oluşturan fonksiyonlar genellikle veri türünü açıkça belirtmek için isteğe bağlı bir argüman da içerir. İşte bir örnek:\n",
"\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"x = np.array([1, 2]) # numpy da verinin tipini seçme\n",
"print(x.dtype) # ekrana yazdır \"int64\"\n",
"\n",
"x = np.array([1.0, 2.0]) # numpy da verinin tipini seçme\n",
"print(x.dtype) # ekrana yazdır \"float64\"\n",
"\n",
"x = np.array([1, 2], dtype=np.int64) # Belirli bir veri türünü zorla.\n",
"print(x.dtype) # ekrana yazdır \"int64\""
],
"execution_count": 26,
"outputs": [
{
"output_type": "stream",
"text": [
"int64\n",
"float64\n",
"int64\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "PjEe_d7V44ti",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 343
},
"outputId": "c123b748-a174-4b59-bc24-4cbf45004fd6"
},
"cell_type": "code",
"source": [
"\"\"\"## Dizi matematik\n",
"Temel matematiksel fonksiyonlar diziler üzerinde element olarak çalışır ve hem operatör aşırı yükleri hem de numpy modülündeki fonksiyonlar olarak kullanılabilir:\n",
"\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"x = np.array([[1,2],[3,4]], dtype=np.float64)\n",
"y = np.array([[5,6],[7,8]], dtype=np.float64)\n",
"\n",
"# Eleman toplama; \n",
"# [[ 6.0 8.0]\n",
"# [10.0 12.0]]\n",
"print(x + y)\n",
"print(np.add(x, y))\n",
"\n",
"# Eleman çıkarma;\n",
"# [[-4.0 -4.0]\n",
"# [-4.0 -4.0]]\n",
"print(x - y)\n",
"print(np.subtract(x, y))\n",
"\n",
"# Eleman çarpım;\n",
"# [[ 5.0 12.0]\n",
"# [21.0 32.0]]\n",
"print(x * y)\n",
"print(np.multiply(x, y))\n",
"\n",
"# Eleman bölme;\n",
"# [[ 0.2 0.33333333]\n",
"# [ 0.42857143 0.5 ]]\n",
"print(x / y)\n",
"print(np.divide(x, y))\n",
"\n",
"# Eleman kare kök;\n",
"# [[ 1. 1.41421356]\n",
"# [ 1.73205081 2. ]]\n",
"print(np.sqrt(x))"
],
"execution_count": 27,
"outputs": [
{
"output_type": "stream",
"text": [
"[[ 6. 8.]\n",
" [10. 12.]]\n",
"[[ 6. 8.]\n",
" [10. 12.]]\n",
"[[-4. -4.]\n",
" [-4. -4.]]\n",
"[[-4. -4.]\n",
" [-4. -4.]]\n",
"[[ 5. 12.]\n",
" [21. 32.]]\n",
"[[ 5. 12.]\n",
" [21. 32.]]\n",
"[[0.2 0.33333333]\n",
" [0.42857143 0.5 ]]\n",
"[[0.2 0.33333333]\n",
" [0.42857143 0.5 ]]\n",
"[[1. 1.41421356]\n",
" [1.73205081 2. ]]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "A4yhrQwg484f",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 162
},
"outputId": "ca12da91-1017-41ac-f18a-f59020969de8"
},
"cell_type": "code",
"source": [
"\"\"\"MATLAB'dan farklı olarak, * matris çarpımı değil, elemansal çarpımdır. Bunun yerine, vektörlerin iç elemanlarını hesaplamak, bir vektörü matrisle çarpmak ve matrisleri çarpmak için nokta fonksiyonunu kullanırız. `dot`, hem numpy modülünde hem de dizi nesnelerinin örnek yöntemi olarak kullanılabilir:\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"x = np.array([[1,2],[3,4]])\n",
"y = np.array([[5,6],[7,8]])\n",
"\n",
"v = np.array([9,10])\n",
"w = np.array([11, 12])\n",
"\n",
"# Vektörlerin iç çarpımı\n",
"print(v.dot(w))\n",
"print(np.dot(v, w))\n",
"\n",
"# Matris-Vektör çarpımı\n",
"print(x.dot(v))\n",
"print(np.dot(x, v))\n",
"\n",
"# Matris-Matris çarpımı\n",
"# [[19 22]\n",
"# [43 50]]\n",
"print(x.dot(y))\n",
"print(np.dot(x, y))"
],
"execution_count": 28,
"outputs": [
{
"output_type": "stream",
"text": [
"219\n",
"219\n",
"[29 67]\n",
"[29 67]\n",
"[[19 22]\n",
" [43 50]]\n",
"[[19 22]\n",
" [43 50]]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "hhbsVpPE5Ab3",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 72
},
"outputId": "8ce3efef-167c-4a38-c416-2bc13b149ca9"
},
"cell_type": "code",
"source": [
"\"\"\"Numpy, diziler üzerinde hesaplamalar yapmak için birçok kullanışlı işlev sunar; En kullanışlı olanlardan biri:\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"x = np.array([[1,2],[3,4]])\n",
"\n",
"print(np.sum(x)) # Tüm elemanların toplamı ekrana yazdır \"10\"\n",
"print(np.sum(x, axis=0)) # Tüm Sütunların Toplamı; ekrana yazdır \"[4 6]\"\n",
"print(np.sum(x, axis=1)) # Tüm Satırların Toplamı; ekrana yazdır \"[3 7]\""
],
"execution_count": 29,
"outputs": [
{
"output_type": "stream",
"text": [
"10\n",
"[4 6]\n",
"[3 7]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "7m83oHuL5Dlo",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 126
},
"outputId": "bbf9adc8-bd0c-4649-96fd-7fada5e27f0b"
},
"cell_type": "code",
"source": [
"\n",
"\"\"\"Diziler kullanarak matematiksel fonksiyonların hesaplanması dışında, dizilerdeki verileri yeniden şekillendirmemiz veya başka şekillerde manipüle etmemiz gerekir. Bu tür işlemin en basit örneği bir matrisin aktarılmasıdır; Bir matrisi transpoze etmek için, bir dizi nesnesinin `T` özelliğini kullanın:\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"x = np.array([[1,2], [3,4]])\n",
"print(x) # ekrana yazdır \"[[1 2]\n",
" # [3 4]]\"\n",
"print(x.T) # ekrana yazdır \"[[1 3]\n",
" # [2 4]]\"\n",
"\n",
"# 1 uzunluklu dizinin transpozunun hiç birşeyi değiştirmediğini unutmayın :)\n",
"v = np.array([1,2,3])\n",
"print(v) # ekrana yazdır \"[1 2 3]\"\n",
"print(v.T) # ekrana yazdır \"[1 2 3]\""
],
"execution_count": 30,
"outputs": [
{
"output_type": "stream",
"text": [
"[[1 2]\n",
" [3 4]]\n",
"[[1 3]\n",
" [2 4]]\n",
"[1 2 3]\n",
"[1 2 3]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "OVkUE1SX5Hb4",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 90
},
"outputId": "9362788a-b7f5-4aa4-aca4-cb47d052ad33"
},
"cell_type": "code",
"source": [
"\n",
"\"\"\"## Broadcasting\n",
"Broadcasting, aritmetik işlemleri gerçekleştirirken numpy'nin farklı şekillerden oluşan dizilerle çalışmasını sağlayan güçlü bir mekanizmadır. Sıklıkla daha küçük bir diziye ve daha büyük bir diziye sahibiz ve daha büyük dizide bazı işlemleri gerçekleştirmek için daha küçük diziyi birden çok kez kullanmak isteriz.\n",
"\n",
"Örneğin, bir matrisin her satırına sabit bir vektör eklemek istediğimizi varsayalım. Bunu böyle yapabiliriz:\n",
"\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"# Vektör v matrisi x matrisinin her satırına ekleyeceğiz, sonucu matris y'de saklıyoruz.\n",
"x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])\n",
"v = np.array([1, 0, 1])\n",
"y = np.empty_like(x) # X ile aynı boyuta sahip boş bir matris oluşturun.\n",
"\n",
"# Vektör v, açık bir döngü ile x matrisinin her satırına ekleyin.\n",
"for i in range(4):\n",
" y[i, :] = x[i, :] + v\n",
"\n",
"# y matrisi aşağıdaki gibi olmalı\n",
"# [[ 2 2 4]\n",
"# [ 5 5 7]\n",
"# [ 8 8 10]\n",
"# [11 11 13]]\n",
"print(y)"
],
"execution_count": 31,
"outputs": [
{
"output_type": "stream",
"text": [
"[[ 2 2 4]\n",
" [ 5 5 7]\n",
" [ 8 8 10]\n",
" [11 11 13]]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "db7tCSKk5KY3",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 162
},
"outputId": "b9a26f9c-fc19-4277-d86f-33a9ac42537b"
},
"cell_type": "code",
"source": [
"\"\"\"Bu çalışıyor; Ancak matris x çok büyük olduğunda, Python'da açık bir döngüyü hesaplamak yavaş olabilir. X vektörünün matrisin her sırasına eklenmesi, dikey olarak çoklu kopyaları istifleyerek bir matris vv oluşturmaya eşdeğerdir, ardından x ve vv'nin eleman toplamıdır. Bu yaklaşımı şöyle uygulayabiliriz:\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"# v vektörünü matrisin x'in her bir satırına ekleyeceğiz, sonucu y matrisinde saklayacağız.\n",
"x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])\n",
"v = np.array([1, 0, 1])\n",
"vv = np.tile(v, (4, 1)) # v için 4 kez satır olarak kendini tekrar eden bir matris oluştur\n",
"print(vv) # ekrana yazdır \"[[1 0 1]\n",
" # [1 0 1]\n",
" # [1 0 1]\n",
" # [1 0 1]]\"\n",
"y = x + vv # x ine vv eleman toplama işlemi yap\n",
"print(y) # ekrana yazdır \"[[ 2 2 4\n",
" # [ 5 5 7]\n",
" # [ 8 8 10]\n",
" # [11 11 13]]\"\n"
],
"execution_count": 32,
"outputs": [
{
"output_type": "stream",
"text": [
"[[1 0 1]\n",
" [1 0 1]\n",
" [1 0 1]\n",
" [1 0 1]]\n",
"[[ 2 2 4]\n",
" [ 5 5 7]\n",
" [ 8 8 10]\n",
" [11 11 13]]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "9CPOFctA5Oun",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 90
},
"outputId": "7e720497-61e8-48cd-e689-d0ec782bb537"
},
"cell_type": "code",
"source": [
"\"\"\"Numpy broadcasting, bu hesaplamayı gerçekte birden çok kopya oluşturmadan gerçekleştirmemizi sağlar.\"\"\"\n",
"\n",
"import numpy as np\n",
"\n",
"# Vektör v matrisi x matrisinin her satırına ekleyeceğiz, sonucu matris y'de saklıyoruz.\n",
"x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])\n",
"v = np.array([1, 0, 1])\n",
"y = x + v # broadcasting kullanarak x dizisi ile v'yi ekleyin.\n",
"print(y) # ekrana yazdır \"[[ 2 2 4]\n",
" # [ 5 5 7]\n",
" # [ 8 8 10]\n",
" # [11 11 13]]\""
],
"execution_count": 33,
"outputs": [
{
"output_type": "stream",
"text": [
"[[ 2 2 4]\n",
" [ 5 5 7]\n",
" [ 8 8 10]\n",
" [11 11 13]]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "E1BAHzRI5TiM",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"\n",
"\"\"\"İki dizinin broadcasti için şu kuralları izler:\n",
"\n",
"1. Diziler aynı sıraya sahip değilse, her iki şekil aynı uzunluğa sahip oluncaya kadar alt sıra dizisinin şeklini 1 s ile hazırlayın.\n",
"\n",
"2. İki dizinin, boyutta aynı boyuta sahip olması durumunda ya da dizilerden biri bu boyutta 1 boyutuna sahipse, bir boyutta uyumlu oldukları söylenir.\n",
"\n",
"3. Diziler, her boyutta uyumluysa birlikte broadcast olabilir.\n",
"\n",
"4. Broadcast ten sonra, her bir dizi, iki giriş dizisinin elemanlarının maksimumlarına eşit bir şekle sahipmiş gibi davranır.\n",
"\n",
"5. Bir dizinin 1 boyutunun ve diğer dizinin 1'den büyük boyutta olduğu herhangi bir boyutta, ilk dizi, bu boyut boyunca kopyalanmış gibi davranır.\n",
"\n",
"Bu konuyu detaylı incelemek isterseniz: [Açıklama Dokümanı](https://http://scipy.github.io/old-wiki/pages/EricsBroadcastingDoc)\n",
"\"\"\"\n",
"\n",
"import numpy as np"
],
"execution_count": 0,
"outputs": []
},
{
"metadata": {
"id": "QQglBfIz5WhZ",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 108
},
"outputId": "638dbb4c-3ad5-496d-9c3a-10e1eb2aa108"
},
"cell_type": "code",
"source": [
"\n",
"# Vektör dış çarpımlarını hesaplayın\n",
"v = np.array([1,2,3]) # v boyutu (3,)\n",
"w = np.array([4,5]) # w boyutu (2,)\n",
"# To compute an outer product, we first reshape v to be a column\n",
"# vector of shape (3, 1); we can then broadcast it against w to yield\n",
"# an output of shape (3, 2), which is the outer product of v and w:\n",
"# Bir dış çarpım hesaplamak için, ilk önce v boyutunu (3, 1) bir sütun vektörü \n",
"# olarak yeniden boyutlandırırız; Daha sonra v ve w'nin dış çarpımı olan bir \n",
"# boyutlu (3, 2) çıktısını vermek için w'ye karşı broadcast yapabiliriz:\n",
"# [[ 4 5]\n",
"# [ 8 10]\n",
"# [12 15]]\n",
"print(np.reshape(v, (3, 1)) * w)\n",
"\n",
"# Bir matrisin her satırına bir vektör ekle\n",
"x = np.array([[1,2,3], [4,5,6]])\n",
"# x'in boyutu (2, 3) ve v'nin boyutu (3,) sonuçta eldeedilen boyut (2, 3),\n",
"# aşğıdaki matrisi oluşturmuş oluruz:\n",
"# [[2 4 6]\n",
"# [5 7 9]]\n",
"print(x + v)\n"
],
"execution_count": 35,
"outputs": [
{
"output_type": "stream",
"text": [
"[[ 4 5]\n",
" [ 8 10]\n",
" [12 15]]\n",
"[[2 4 6]\n",
" [5 7 9]]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "gaJ8VaD85X-e",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 126
},
"outputId": "d9fc5f0d-29f1-4f75-dcd8-64e907246554"
},
"cell_type": "code",
"source": [
"\n",
"# Matrisin her sütununa bir vektör eklenebilir.\n",
"# x'in boyutu (2, 3) ve w'nun boyutu (2,).\n",
"# x'in transpozunu aldıktan sonra boyutu (3, 2) ve elde dilen son boyut (broadcasting) (3, 2); \n",
"# bu sonucun transpozunu alırsak ta elde edilen sonuç boyut (2, 3) Matris x'e w vektörü eklenmiş ve \n",
"# transpozu alınmı tekrar w eklenmiş ve tüm sonucun transpozu alınmıştır.\n",
"# [[ 5 6 7]\n",
"# [ 9 10 11]]\n",
"print((x.T + w).T)\n",
"# Ya da bir başka çözüm w'yi yeniden boyutlandırıp bir sütun vektörü haline getirebiliriz (2, 1);\n",
"# Ardından direkt broadcast edebiliriz ve x ile toplayabiliriz. w\n",
"print(x + np.reshape(w, (2, 1)))\n",
"\n",
"# Bir matrisi bir sabit sayı ile de çarpabiliriz.\n",
"# x boyutu (2, 3)\n",
"# [[ 2 4 6]\n",
"# [ 8 10 12]]\n",
"print(x * 2)\n"
],
"execution_count": 36,
"outputs": [
{
"output_type": "stream",
"text": [
"[[ 5 6 7]\n",
" [ 9 10 11]]\n",
"[[ 5 6 7]\n",
" [ 9 10 11]]\n",
"[[ 2 4 6]\n",
" [ 8 10 12]]\n"
],
"name": "stdout"
}
]
},
{
"metadata": {
"id": "Ld5mLcTg5dX6",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 347
},
"outputId": "a2362447-edfc-4e32-fe75-7a29eda9246d"
},
"cell_type": "code",
"source": [
"\"\"\"## Matplotlib\n",
"Matplotlib bir çizim kütüphanesidir. Bu bölümde MATLAB'inkine benzer bir çizim sistemi sağlayan `matplotlib.pyplot` modülüne kısa bir giriş yapın.\n",
"\n",
"\n",
"**Çizdirme**\n",
"Matplotlib'deki en önemli işlev, 2B veriyi çizmenize izin veren çizimdir. İşte basit bir örnek:\n",
"\"\"\"\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# x ve y koordinatlarını için bir sinüs eğrisi hesaplayın.\n",
"x = np.arange(0, 3 * np.pi, 0.1)\n",
"y = np.sin(x)\n",
"\n",
"#\n",
"plt.plot(x, y)\n",
"plt.show() # grafikleri görmek için plt.show () öğesini çağırmalısınız."
],
"execution_count": 37,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f5d293a0450>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "xv-mJFgV5e1R",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 376
},
"outputId": "79b8f08e-cdf2-4447-ce2c-4d59b6b0c982"
},
"cell_type": "code",
"source": [
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# x ve y koordinatlarını için bir sinüs ve kosinüs eğrisi hesaplayın.\n",
"x = np.arange(0, 3 * np.pi, 0.1)\n",
"y_sin = np.sin(x)\n",
"y_cos = np.cos(x)\n",
"\n",
"\n",
"plt.plot(x, y_sin)\n",
"plt.plot(x, y_cos)\n",
"plt.xlabel('x axis label')\n",
"plt.ylabel('y axis label')\n",
"plt.title('Sine and Cosine')\n",
"plt.legend(['Sine', 'Cosine'])\n",
"plt.show()"
],
"execution_count": 38,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f5d28ad6910>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "GZr-3uPG5iMC",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 362
},
"outputId": "7582ec9a-0e2b-4bf2-ea02-7ad6f85a8243"
},
"cell_type": "code",
"source": [
"\"\"\"## Subplots\"\"\"\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# x ve y koordinatlarını için bir sinüs ve kosinüs eğrisi hesaplayın.\n",
"y_sin = np.sin(x)\n",
"y_cos = np.cos(x)\n",
"\n",
"# 2 satır 1 sütundan oluşan bir çizim ortamı oluşturur.\n",
"plt.subplot(2, 1, 1)\n",
"\n",
"# birinci çizim 1. satıra yazar\n",
"plt.plot(x, y_sin)\n",
"plt.title('Sine')\n",
"\n",
"# 2. satıra da 2. çizimi yazar\n",
"plt.subplot(2, 1, 2)\n",
"plt.plot(x, y_cos)\n",
"plt.title('Cosine')\n",
"\n",
"# Şekli ekranda göstermek için kullanılır\n",
"plt.show()"
],
"execution_count": 39,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n11VV7QAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f5d293a0210>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"metadata": {
"id": "omzUayqC5m5u",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "8fc60922-1c47-4391-b984-e8e783074697"
},
"cell_type": "code",
"source": [
"\n",
"def quicksort(arr):\n",
" if len(arr) <= 1:\n",
" return arr\n",
" pivot = arr[len(arr) // 2]\n",
" left = [x for x in arr if x < pivot]\n",
" middle = [x for x in arr if x == pivot]\n",
" right = [x for x in arr if x > pivot]\n",
" return quicksort(left) + middle + quicksort(right)\n",
"\n",
"print(quicksort([3,6,8,10,1,2,1]))\n"
],
"execution_count": 40,
"outputs": [
{
"output_type": "stream",
"text": [
"[1, 1, 2, 3, 6, 8, 10]\n"
],
"name": "stdout"
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.