Skip to content
This repository was archived by the owner on Aug 11, 2023. It is now read-only.

Commit 5daec01

Browse files
committed
Update Numpy Section
1 parent 4f13bfc commit 5daec01

File tree

7 files changed

+327
-1
lines changed

7 files changed

+327
-1
lines changed

README-PYTHON-HOMEWORKS.md

+7
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,13 @@
117117
</details>
118118

119119

120+
## TP08
121+
- Date, Time, Format
122+
- Math
123+
- Inheritance
124+
- NumPy
125+
- ...
126+
120127

121128
## Answers to the questions of students
122129
- [Get **object** by **id**()](/students/questions/object-get-by-id.py)
+26-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,26 @@
1-
# NumPy
1+
# NumPy
2+
### Installation
3+
- `pip install numpy`
4+
### Import
5+
- `import numpy as np`
6+
### Concepts
7+
- [Array](numpy_array.py)
8+
- `.array()`
9+
- `.dtype, .ndim, .shape`
10+
- [DataTypes](numpy_datatypes.py)
11+
- `i: int, u: unsigned int, c: complex, f: float`
12+
- `M: datetime, m: timedelta`
13+
- `b: bool`
14+
- `O: object`
15+
- `S: string, U: unicode string`
16+
- `V: byte-like object` ??
17+
- [Convert Data Type](numpy_convert_data_type.py)
18+
- `.astype()`
19+
- [Access](numpy_access.py)
20+
- `.copy(), .view()`
21+
- `.base` <sub>check if returned array is copy or view</sub>
22+
- `np.nditer(array), np.ndenumerate(array)`
23+
- [Functions](numpy_functions.py)
24+
- `.reshape()`
25+
- `np.concatenate()`
26+
- `np.stack(), np.hstack(), np.vstack(), np.dstack()`
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import numpy as np
2+
3+
# ------------------------------------------------------------------
4+
# View, Copy
5+
my_array = np.array([1, 2, 3, 4, 5])
6+
my_array_copy = my_array.copy()
7+
my_array_view = my_array.view()
8+
9+
10+
my_array_copy[0] = 100
11+
print(my_array, my_array_copy, my_array_copy.base)
12+
# [1 2 3 4 5] [100 2 3 4 5] None
13+
14+
15+
my_array_view[0] = 100
16+
print(my_array, my_array_view, my_array_view.base)
17+
# [100 2 3 4 5] [100 2 3 4 5] [100 2 3 4 5]
18+
19+
20+
# ------------------------------------------------------------------
21+
# Iterate
22+
23+
24+
my_array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
25+
my_array = my_array.reshape(2, 3, -1)
26+
27+
28+
for x in my_array:
29+
for y in x:
30+
for z in y:
31+
print(z)
32+
"""
33+
1
34+
2
35+
3
36+
4
37+
5
38+
6
39+
7
40+
8
41+
9
42+
10
43+
11
44+
12
45+
"""
46+
47+
48+
for item in np.nditer(my_array):
49+
print(item)
50+
"""
51+
1
52+
2
53+
3
54+
4
55+
5
56+
6
57+
7
58+
8
59+
9
60+
10
61+
11
62+
12
63+
"""
64+
65+
for index, item in np.ndenumerate(my_array):
66+
print(index, item)
67+
"""
68+
(0, 0, 0) 1
69+
(0, 0, 1) 2
70+
(0, 1, 0) 3
71+
(0, 1, 1) 4
72+
(0, 2, 0) 5
73+
(0, 2, 1) 6
74+
(1, 0, 0) 7
75+
(1, 0, 1) 8
76+
(1, 1, 0) 9
77+
(1, 1, 1) 10
78+
(1, 2, 0) 11
79+
(1, 2, 1) 12
80+
"""
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import numpy as np
2+
3+
4+
my_array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
5+
print(my_array, type(my_array), my_array.dtype, "Dimensions", my_array.ndim)
6+
# [1 2 3 4 5 6 7 8 9] <class 'numpy.ndarray'> int64 Dimensions 1
7+
8+
9+
print(my_array.shape)
10+
# (9,)
11+
12+
13+
# Slice 1D
14+
print(my_array[1:3], "\n\n")
15+
# [2 3]
16+
17+
18+
my_array = np.array([[1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 20, 30, 40, 50, 60, 70, 80, 90]])
19+
print(my_array, type(my_array), my_array.dtype, "Dimensions", my_array.ndim)
20+
# [[ 1 2 3 4 5 6 7 8 9]
21+
# [10 20 30 40 50 60 70 80 90]] <class 'numpy.ndarray'> int64 Dimensions 2
22+
23+
24+
print(my_array.shape)
25+
# (2, 9)
26+
27+
28+
# Slice 2D
29+
print(my_array[1, 1:3]) # or
30+
print(my_array[1][1:3], "\n\n")
31+
# [20 30]
32+
# [20 30]
33+
34+
35+
# Access
36+
my_array[0][0] = 100
37+
print(my_array, type(my_array), my_array.dtype, "Dimensions", my_array.ndim)
38+
# [[100 2 3 4 5 6 7 8 9]
39+
# [ 10 20 30 40 50 60 70 80 90]] <class 'numpy.ndarray'> int64 Dimensions 2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import numpy as np
2+
3+
4+
my_array = np.array([2.8, 3.6, 4.1])
5+
print(my_array, my_array.dtype)
6+
# [2.8 3.6 4.1] float64
7+
8+
9+
my_array = my_array.astype("i1")
10+
print(my_array, my_array.dtype)
11+
# [2 3 4] int8
12+
13+
14+
my_array = my_array.astype("S1")
15+
print(my_array, my_array.dtype)
16+
# [b'2' b'3' b'4'] |S1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import numpy as np
2+
3+
4+
my_array = np.array(["A", "B", "Hello"], dtype="S")
5+
print(my_array, type(my_array), my_array.dtype) # S5
6+
7+
8+
my_array = np.array(["A", "B", "Hello"], dtype="U")
9+
print(my_array, type(my_array), my_array.dtype) # U5
10+
11+
12+
my_array = np.array([3 + 4j, 1 + 2j, 1])
13+
print(my_array, type(my_array), my_array.dtype) # complex128
14+
15+
16+
my_array = np.array([1.1, 2, 3])
17+
print(my_array, type(my_array), my_array.dtype) # float64
18+
19+
20+
my_array = np.array(["2020-12-02", "2022-11-03"], dtype="M")
21+
print(my_array, type(my_array), my_array.dtype) # datetime64
22+
23+
24+
my_array = np.array([100000, 200000], dtype="m")
25+
print(my_array, type(my_array), my_array.dtype) # timedelta64
26+
27+
28+
my_array = np.array([True, False])
29+
print(my_array, type(my_array), my_array.dtype) # bool
30+
31+
32+
my_array = np.array([1, 2], "i1")
33+
print(my_array, type(my_array), my_array.dtype) # int8 -> 8 bits -> 0 - 255
34+
35+
36+
my_array = np.array([1, 2], "i2")
37+
print(my_array, type(my_array), my_array.dtype) # int16
38+
39+
40+
my_array = np.array([1, 2], "i4")
41+
print(my_array, type(my_array), my_array.dtype) # int32
42+
43+
44+
my_array = np.array([1, 2], "i8")
45+
print(my_array, type(my_array), my_array.dtype) # int64
46+
47+
48+
my_array = np.array([1, 2], "b")
49+
print(my_array, type(my_array), my_array.dtype) # int8
50+
51+
52+
my_array = np.array([1, 2], "f2")
53+
print(my_array, type(my_array), my_array.dtype) # float16
54+
55+
56+
my_array = np.array([1, 2], "f") # == f4
57+
print(my_array, type(my_array), my_array.dtype) # float32
58+
59+
60+
my_array = np.array([1, 2], "f8")
61+
print(my_array, type(my_array), my_array.dtype) # float64
62+
63+
64+
class MyClass:
65+
pass
66+
67+
68+
my_array = np.array([MyClass(), MyClass()], "O")
69+
print(my_array, type(my_array), my_array.dtype) # object
70+
71+
72+
my_array = np.array([b'A', b'B'], "V")
73+
print(my_array, type(my_array), my_array.dtype) # V1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import numpy as np
2+
3+
#------------------------------------------------------------------
4+
# Reshape
5+
my_array = np.array([1, 2, 3, 4, 5, 6])
6+
print(my_array, my_array.shape)
7+
# [1 2 3 4 5 6] (6,)
8+
9+
10+
my_array = my_array.reshape(2, 3)
11+
print(my_array, my_array.shape)
12+
# [[1 2 3]
13+
# [4 5 6]] (2, 3)
14+
15+
16+
my_array = my_array.reshape(6)
17+
print(my_array, my_array.shape)
18+
# [1 2 3 4 5 6] (6,)
19+
20+
21+
my_array = my_array.reshape(3, 2)
22+
print(my_array, my_array.shape)
23+
# [[1 2]
24+
# [3 4]
25+
# [5 6]] (3, 2)
26+
27+
28+
my_array = my_array.reshape(6)
29+
print(my_array, my_array.shape)
30+
# [1 2 3 4 5 6] (6,)
31+
32+
33+
my_array = my_array.reshape(2, 3, 1)
34+
print(my_array, my_array.shape)
35+
# [[[1]
36+
# [2]
37+
# [3]]
38+
#
39+
# [[4]
40+
# [5]
41+
# [6]]] (2, 3, 1)
42+
43+
44+
my_array = my_array.reshape(6)
45+
print(my_array, my_array.shape)
46+
# [1 2 3 4 5 6] (6,)
47+
48+
49+
my_array = my_array.reshape(1,-1,2) # When you do not know the correct value for dimention you can pass -1
50+
print(my_array, my_array.shape)
51+
# [[[1 2]
52+
# [3 4]
53+
# [5 6]]] (1, 3, 2)
54+
55+
56+
my_array = my_array.reshape(-1) # pass -1 to make a flat array
57+
print(my_array, my_array.shape)
58+
# [1 2 3 4 5 6] (6,)
59+
60+
61+
#------------------------------------------------------------------
62+
# np.concatenate()
63+
64+
x=np.array([4,5,6])
65+
y=np.array([7,8,9])
66+
print(np.concatenate([x,y]))
67+
# [4 5 6 7 8 9]
68+
69+
#------------------------------------------------------------------
70+
# np.stack()
71+
72+
print(np.stack([x,y]))
73+
# [[4 5 6]
74+
# [7 8 9]]
75+
76+
print(np.hstack([x,y]))
77+
# [4 5 6 7 8 9]
78+
79+
print(np.vstack([x,y]))
80+
# [[4 5 6]
81+
# [7 8 9]]
82+
83+
print(np.dstack([x,y]))
84+
# [[[4 7]
85+
# [5 8]
86+
# [6 9]]]

0 commit comments

Comments
 (0)