From 3629489cbc0e8883a58f7d405b1fbcc8e9a2fdf3 Mon Sep 17 00:00:00 2001 From: geekiot Date: Tue, 21 Oct 2025 18:46:22 +0500 Subject: [PATCH] Update Numpy Notes --- Notes/Numpy_Base.ipynb | 385 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 368 insertions(+), 17 deletions(-) diff --git a/Notes/Numpy_Base.ipynb b/Notes/Numpy_Base.ipynb index 6d2e024..82a18f1 100755 --- a/Notes/Numpy_Base.ipynb +++ b/Notes/Numpy_Base.ipynb @@ -31,27 +31,17 @@ "id": "6f127250", "metadata": {}, "source": [ - "ndarray, основные метка" + "ndarray - основная единица в NumPy, представляет из себя n-мерный массив." ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 2, "id": "5df38ce7", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(3, 3, 3)\n", - "3\n", - "int64\n" - ] - } - ], + "outputs": [], "source": [ - "data = np.array(\n", + "data: np.ndarray = np.array(\n", " [\n", " [\n", " [1, 2, 3],\n", @@ -69,12 +59,373 @@ " [7, 8, 9],\n", " ],\n", " ],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "5b68b84b", + "metadata": {}, + "source": [ + "Параметры и базовые функции:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "866a3fb8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(3, 3, 3)\n", + "3\n" + ] + } + ], + "source": [ + "# Размерность массива\n", + "shape = data.shape\n", + "print(shape)\n", + "\n", + "# Кол-во измерений\n", + "dimentions = data.ndim\n", + "print(dimentions)" + ] + }, + { + "cell_type": "markdown", + "id": "6e167e93", + "metadata": {}, + "source": [ + "## Измерения в Numpy" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c9013d88", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.int64(60)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 0-D arrays - Scalars\n", + "scalar = np.array(42)\n", + "scalar2 = np.array(18)\n", + "\n", + "scalar + scalar2" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7f705611", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "82\n", + "[10 24 48]\n" + ] + } + ], + "source": [ + "# 1-D arrays - Vectors\n", + "vec1 = np.array([1, 2, 3])\n", + "vec2 = np.array((10, 12, 16))\n", + "\n", + "print(np.dot(vec1, vec2))\n", + "print(vec1 * vec2)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "b3a9d28b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[10 12]\n", + "[13 15]\n", + "[4 8]\n" + ] + }, + { + "data": { + "text/plain": [ + "array([61, 81])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2-D arrays - Matrix\n", + "matrix = np.array(\n", + " [\n", + " [10, 12],\n", + " [13, 15],\n", + " [4, 8],\n", + " ]\n", ")\n", "\n", + "vec = np.array(\n", + " [\n", + " 1, 3, 3,\n", + " ]\n", + ")\n", "\n", - "print(data.shape)\n", - "print(data.ndim)\n", - "print(data.dtype)" + "print(*matrix, sep=\"\\n\")\n", + "\n", + "# Умножение вектора на матрицу\n", + "vec @ matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ec7aafca", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[12 15 8]\n" + ] + }, + { + "data": { + "text/plain": [ + "array([12, 45, 24])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vec2 = matrix[:, 1]\n", + "print(vec2)\n", + "\n", + "vec * vec2" + ] + }, + { + "cell_type": "markdown", + "id": "7732da7b", + "metadata": {}, + "source": [ + "## Минимальное кол-во измеренений" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "721daf56", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2]])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Сам допаковывает переданный массив в нужное кол-во измерений\n", + "\n", + "vec = np.array([1, 2], ndmin=2)\n", + "vec" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "eae8552a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1 2 3]\n", + " [10 12 32]]\n" + ] + } + ], + "source": [ + "array = [[1, 2, 3], [10, 12, 32]]\n", + "array = np.array(array, ndmin=2)\n", + "print(array)" + ] + }, + { + "cell_type": "markdown", + "id": "3fd29be4", + "metadata": {}, + "source": [ + "## Доступ по индексам" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "2d139f31", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([12, 14, 34])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "array[0, 1] + array[1, :]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "927cc500", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([10, 12])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "array[1, -3:-1]" + ] + }, + { + "cell_type": "markdown", + "id": "05a861bf", + "metadata": {}, + "source": [ + "## Типы данных\n", + "* Накладываются на весь массив\n", + "* Базовые типы:\n", + " * u - безнаковые числа\n", + " * i - целые числа\n", + " * f - дробные числа\n", + " * c - комплексные дробные числа\n", + " * m - timedelta\n", + " * M - datetime\n", + " * S - строки\n", + " * V - void, просто определенные куски памяти, выделенные под хранение\n", + " * U - строки unicode\n", + " * O - object, смешанный тип" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "43bcb180", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "int64 (3,) 1\n", + "float64 (3,) 1\n", + "int64 (3,) 1\n", + "object (3,) 1\n" + ] + } + ], + "source": [ + "array = [1, 2, 3]\n", + "\n", + "numpy_array = np.array(array)\n", + "print(numpy_array.dtype, numpy_array.shape, numpy_array.ndim)\n", + "\n", + "\n", + "array = [1, 2, 3.]\n", + "\n", + "numpy_array = np.array(array)\n", + "print(numpy_array.dtype, numpy_array.shape, numpy_array.ndim)\n", + "\n", + "numpy_array = np.array(array, dtype=int)\n", + "print(numpy_array.dtype, numpy_array.shape, numpy_array.ndim)\n", + "\n", + "\n", + "\n", + "class Test:\n", + " def __init__(self): pass\n", + "\n", + "array = [Test(), True, 3]\n", + "\n", + "numpy_array = np.array(array, dtype=object)\n", + "print(numpy_array.dtype, numpy_array.shape, numpy_array.ndim)" + ] + }, + { + "cell_type": "markdown", + "id": "8c12e579", + "metadata": {}, + "source": [ + "Конвертация numpy массива в другой numpy массив" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "e6f6728c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[-1.2 2.5 3.1] float64\n", + "[-1 2 3] int16\n" + ] + } + ], + "source": [ + "array: np.ndarray = np.array([-1.2, 2.5, 3.1])\n", + "print(array, array.dtype)\n", + "\n", + "new_array = np.ndarray = array.astype(\"i2\")\n", + "print(new_array, new_array.dtype)" ] } ],