Difference between revisions of "User:Praveer-mathur-9f3d@uni-bonn.de/python-on-hpc"

From HPC Wiki
Jump to navigation Jump to search
 
(5 intermediate revisions by the same user not shown)
Line 100: Line 100:
 
- Pip
 
- Pip
 
|| Explanation: Wrong
 
|| Explanation: Wrong
+ Conda
+
- Conda
 
|| Explanation: Wrong
 
|| Explanation: Wrong
 
- Both of them
 
- Both of them
Line 140: Line 140:
 
+ Neither of them
 
+ Neither of them
 
|| Explanation: Correct
 
|| Explanation: Correct
 +
</quiz>
 +
{{hidden end}}
 +
 +
=== Short Quiz: Arrays and Performance === <!--T:5-->
 +
 +
{{hidden begin
 +
|title = What should you always do before you optimize your code's performance? (Hard to implement).
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| Measure your code's performance!
 +
</quiz>
 +
{{hidden end}}
 +
 +
=== Short Quiz: Array Memory Layout  === <!--T:5-->
 +
 +
{{hidden begin
 +
|title = Which index varies fastest in a row-major layout, which varies fastest in a
 +
column-major layout? (Hard to implement).
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| Row-major: last index, column-major: first index
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = Which ordering do NumPy arrays have by default? More than one answer
 +
may be correct.
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="[]"}
 +
+ C order
 +
|| Explanation: Correct
 +
- Fortran order
 +
|| Explanation: Wrong
 +
- Column-major
 +
|| Explanation: Wrong
 +
+ Row-major
 +
|| Explanation: Correct
 +
</quiz>
 +
{{hidden end}}
 +
 +
=== Short Quiz: Array Shapes, Broadcasting  === <!--T:5-->
 +
 +
Consider the following code. What does each print statement output? Could be an error. Treat all print statements independently. (Hard to implement)
 +
 +
<code>x = np.zeros(5) <br> y = np.zeros((3, 5)) <br> z = np.zeros((5, 3, 1))</code>
 +
 +
{{hidden begin
 +
|title = <code>print((x + y).shape)</code>
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| <code>(3, 5)</code>
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = <code>print((x + z).shape)</code>
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| <code>(5, 3, 5)</code>
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = <code>print((y + z).shape)</code>
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| <code>(5, 3, 5)</code>
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = <code>print(y[:2, :2].shape)</code>
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| <code>(2, 2)</code>
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = <code>print(y[:2].shape)</code>
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| <code>(2, 5)</code>
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = <code>print((y[:2] + x[:2]).shape)</code>
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| <code>ValueError: [...] shapes (2, 5) (2,)</code>
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = <code>print((y[..., np.newaxis] + z).shape)</code>
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| <code>ValueError: [...] shapes (3, 5, 1) (5, 3, 1)</code>
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = <code>print((y.ravel() + x[0]).shape)</code>
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| <code>(15,)</code>
 +
</quiz>
 +
{{hidden end}}
 +
 +
=== Short Quiz: Advanced Indexing  === <!--T:5-->
 +
 +
Consider the following code. What does each print statement output? Could be an error. Treat all print statements independently. (Hard to implement)
 +
 +
<code>a = np.array([[1, 2, 3] [4, 5, 6]]) <br> idx = np.array([0, 0]) <br> mask = np.array([False, True, True])</code>
 +
 +
{{hidden begin
 +
|title = <code>print(a[idx])</code>
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| <code>[[1, 2, 3], [1, 2, 3]]</code>
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = <code>print(a[:, idx])</code>
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| <code>[[1, 1], [4, 4]]</code>
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = <code>print(a[idx, :])</code>
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| <code>[[1, 2, 3], [1, 2, 3]]</code>
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = <code>a[:, mask] = -1 <br> print(a)</code>
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+  Click and submit to see the answer
 +
|| <code>[[1, -1, -1], [4, -1, -1]]</code>
 
</quiz>
 
</quiz>
 
{{hidden end}}
 
{{hidden end}}

Latest revision as of 15:07, 18 March 2026

Short Quiz: Python Packages

Which of these locations will Python search for packages by default?

Anything that is in $PYTHONPATH
Anything in your home
Preconfigured Site Packages
The current working directory

Short Quiz: Virtual Environments

Which of the following statements is true?

venv comes with Python
Virtual environments always go to ~/.virtualenvs
Each virtual env always has its own Python instance
The activate script has to be source-d to activate the venv
The deactivate script has to be source-d to deactivate the venv

Short Quiz: Conda vs. Pip

To which package manager do the statements apply? pip, conda, neither or both?

"Non-Python packages available by default"

Pip
Conda
Both of them
Neither of them

"Tightly integrated with its own virtual environment feature"

Pip
Conda
Both of them
Neither of them

"Built-in third-party package repositories"

Pip
Conda
Both of them
Neither of them

"Installs new Python executable into env by default"

Pip
Conda
Both of them
Neither of them

"Automatically installs dependencies for requested package"

Pip
Conda
Both of them
Neither of them

"Requires you to specify package version"

Pip
Conda
Both of them
Neither of them

Short Quiz: Arrays and Performance

What should you always do before you optimize your code's performance? (Hard to implement).

Click and submit to see the answer

Short Quiz: Array Memory Layout

Which index varies fastest in a row-major layout, which varies fastest in a column-major layout? (Hard to implement).

Click and submit to see the answer

Which ordering do NumPy arrays have by default? More than one answer may be correct.

C order
Fortran order
Column-major
Row-major

Short Quiz: Array Shapes, Broadcasting

Consider the following code. What does each print statement output? Could be an error. Treat all print statements independently. (Hard to implement)

x = np.zeros(5)
y = np.zeros((3, 5))
z = np.zeros((5, 3, 1))

print((x + y).shape)

Click and submit to see the answer

print((x + z).shape)

Click and submit to see the answer

print((y + z).shape)

Click and submit to see the answer

print(y[:2, :2].shape)

Click and submit to see the answer

print(y[:2].shape)

Click and submit to see the answer

print((y[:2] + x[:2]).shape)

Click and submit to see the answer

print((y[..., np.newaxis] + z).shape)

Click and submit to see the answer

print((y.ravel() + x[0]).shape)

Click and submit to see the answer

Short Quiz: Advanced Indexing

Consider the following code. What does each print statement output? Could be an error. Treat all print statements independently. (Hard to implement)

a = np.array([[1, 2, 3] [4, 5, 6]])
idx = np.array([0, 0])
mask = np.array([False, True, True])

print(a[idx])

Click and submit to see the answer

print(a[:, idx])

Click and submit to see the answer

print(a[idx, :])

Click and submit to see the answer

a[:, mask] = -1
print(a)

Click and submit to see the answer