Created
August 24, 2017 14:34
-
-
Save salihkaragoz/2d09098532e6f0f904879654760a5442 to your computer and use it in GitHub Desktop.
Python Numpy Tutorial
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This lecture based on Stanford' Python Numpy Tutorial | |
def quicksort(arr): | |
if len(arr) <= 1: | |
return arr | |
pivot = arr[len(arr) // 2] | |
left = [x for x in arr if x < pivot] | |
middle = [x for x in arr if x == pivot] | |
right = [x for x in arr if x > pivot] | |
return quicksort(left) + middle + quicksort(right) | |
print(quicksort([3,6,8,10,1,2,1])) | |
X=3 | |
print(type(X)) | |
print(X) | |
print(X +1) | |
X += 1 | |
X *= 2 | |
t = True | |
f = False | |
print(t and f) | |
print(t or f) | |
hello = 'hello' | |
world = "world" | |
hwl2 = '%s %s %d' % (hello, world, 12) | |
print(hwl2) | |
s = "hello" | |
print(s.capitalize()) # Capitalize a string; prints "Hello" | |
print(s.upper()) # Convert a string to uppercase; prints "HELLO" | |
print(s.rjust(7)) # Right-justify a string, padding with spaces; prints " hello" | |
print(s.center(7)) # Center a string, padding with spaces; prints " hello " | |
print(s.replace('l', '(ell)')) # Replace all instances of one substring with another; | |
# prints "he(ell)(ell)o" | |
print(' world '.strip()) # Strip leading and trailing whitespace; prints "world" | |
animals = ['cat', 'dog', 'monkey'] | |
for idx, animal in enumerate(animals): | |
print('#%d: %s' % (idx + 1, animal)) | |
# Prints "#1: cat", "#2: dog", "#3: monkey", each on its own line | |
nums = [0, 1, 2, 3, 4] | |
squares = [x ** 2 for x in nums] | |
print(squares) # Prints [0, 1, 4, 9, 16] | |
nums = [0, 1, 2, 3, 4] | |
even_squares = [x ** 2 for x in nums if x % 2 == 0] | |
print(even_squares) # Prints "[0, 4, 16]" | |
d = {'cat': 'cute', 'dog': 'furry'} # Create a new dictionary with some data | |
print(d['cat']) # Get an entry from a dictionary; prints "cute" | |
print('cat' in d) # Check if a dictionary has a given key; prints "True" | |
d['fish'] = 'wet' # Set an entry in a dictionary | |
print(d['fish']) # Prints "wet" | |
# print(d['monkey']) # KeyError: 'monkey' not a key of d | |
print(d.get('monkey', 'N/A')) # Get an element with a default; prints "N/A" | |
print(d.get('fish', 'N/A')) # Get an element with a default; prints "wet" | |
del d['fish'] # Remove an element from a dictionary | |
print(d.get('fish', 'N/A')) # "fish" is no longer a key; prints "N/A" | |
nums = [0, 1, 2, 3, 4] | |
even_num_to_square = {x: x ** 2 for x in nums if x % 2 == 0} | |
print(even_num_to_square) # Prints "{0: 0, 2: 4, 4: 16}" | |
#Numpy is the core library for scientific computing in #Python. It provides a high-performance multidimensional #array object, and tools for working with these arrays. | |
import numpy as np | |
a = np.array([1,2,3]) # Create a rank 1 array | |
print(type(a)) # Prints "<class 'numpy.ndarray'>" | |
print(a.shape) | |
print(a[0], a[1], a[2]) | |
a[0] = 5 | |
print(a) | |
b = np.array([[1,2,3],[4,5,6]]) | |
print(b.shape) | |
print(b[0,0], b[0,1], b[1,0]) | |
a = np.zeros((2,2)) | |
print(a) | |
b = np.ones((1,2)) | |
print(b) | |
c = np.full((2,2) ,7) | |
print(c) | |
d = np.eye(2) | |
print(d) | |
e = np.random.random((2,2)) | |
print(e) | |
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) | |
b = a[:2, 1:3] | |
print(a[0, 1]) # Prints "2" | |
b[0, 0] = 77 # b[0, 0] is the same piece of data as a[0, 1] | |
print(a[0, 1]) # Prints "77" | |
ow_r1 = a[1, :] # Rank 1 view of the second row of a | |
row_r2 = a[1:2, :] # Rank 2 view of the second row of a | |
print(row_r1, row_r1.shape) # Prints "[5 6 7 8] (4,)" | |
print(row_r2, row_r2.shape) # Prints "[[5 6 7 8]] (1, 4)" | |
# We can make the same distinction when accessing columns of an array: | |
col_r1 = a[:, 1] | |
col_r2 = a[:, 1:2] | |
print(col_r1, col_r1.shape) # Prints "[ 2 6 10] (3,)" | |
print(col_r2, col_r2.shape) # Prints "[[ 2] | |
# [ 6] | |
# [10]] (3, 1)" | |
a = np.array([[1,2], [3, 4], [5, 6]]) | |
# An example of integer array indexing. | |
# The returned array will have shape (3,) and | |
print(a[[0, 1, 2], [0, 1, 0]]) # Prints "[1 4 5]" | |
# The above example of integer array indexing is equivalent to this: | |
print(np.array([a[0, 0], a[1, 1], a[2, 0]])) # Prints "[1 4 5]" | |
# When using integer array indexing, you can reuse the same | |
# element from the source array: | |
print(a[[0, 0], [1, 1]]) # Prints "[2 2]" | |
# Equivalent to the previous integer array indexing example | |
print(np.array([a[0, 1], a[0, 1]])) # Prints "[2 2]" | |
# Create a new array from which we will select elements | |
a = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]]) | |
print(a) # prints "array([[ 1, 2, 3], | |
# [ 4, 5, 6], | |
# [ 7, 8, 9], | |
# [10, 11, 12]])" | |
# Create an array of indices | |
b = np.array([0, 2, 0, 1]) | |
# Select one element from each row of a using the indices in b | |
print(a[np.arange(4), b]) # Prints "[ 1 6 7 11]" | |
# Mutate one element from each row of a using the indices in b | |
a[np.arange(4), b] += 10 | |
print(a) # prints "array([[11, 2, 3], | |
# [ 4, 5, 16], | |
# [17, 8, 9], | |
# [10, 21, 12]]) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment