diff --git "a/\320\237\320\276\320\262\321\202\320\276\321\200\320\265\320\275\320\270\320\265 HW.ipynb" "b/\320\237\320\276\320\262\321\202\320\276\321\200\320\265\320\275\320\270\320\265 HW.ipynb" new file mode 100644 index 0000000..43de270 --- /dev/null +++ "b/\320\237\320\276\320\262\321\202\320\276\321\200\320\265\320\275\320\270\320\265 HW.ipynb" @@ -0,0 +1,1173 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "5e8bb7de", + "metadata": {}, + "source": [ + "1. Создать одномерный массив Numpy под названием a из 12 последовательных целых чисел чисел от 12 до 24 невключительно" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b936a691", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "import matplotlib as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "c381d4d9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.arange(12, 24)\n", + "a" + ] + }, + { + "cell_type": "markdown", + "id": "9003fc93", + "metadata": {}, + "source": [ + "#### 2. \n", + "Создать 5 двумерных массивов разной формы из массива a. Не использовать в аргументах метода reshape число -1." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "c351df83", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14, 15],\n", + " [16, 17, 18, 19],\n", + " [20, 21, 22, 23]])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.reshape(3,4)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "3e4e84ac", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14],\n", + " [15, 16, 17],\n", + " [18, 19, 20],\n", + " [21, 22, 23]])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.reshape(4,3)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "a3f991fb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14, 15, 16, 17],\n", + " [18, 19, 20, 21, 22, 23]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.reshape(2,6)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "49de674d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13],\n", + " [14, 15],\n", + " [16, 17],\n", + " [18, 19],\n", + " [20, 21],\n", + " [22, 23]])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.reshape(6,2)" + ] + }, + { + "cell_type": "markdown", + "id": "fd0cf634", + "metadata": {}, + "source": [ + "Создать 5 двумерных массивов разной формы из массива a. Использовать в аргументах метода reshape число -1 (в трех примерах - для обозначения числа столбцов, в двух - для строк)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c4ac5ca7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14, 15],\n", + " [16, 17, 18, 19],\n", + " [20, 21, 22, 23]])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.reshape(-1, 4)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "e8e18270", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14],\n", + " [15, 16, 17],\n", + " [18, 19, 20],\n", + " [21, 22, 23]])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.reshape(-1, 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "1ecb2cb0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13],\n", + " [14, 15],\n", + " [16, 17],\n", + " [18, 19],\n", + " [20, 21],\n", + " [22, 23]])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.reshape(-1, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "69c201f3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14, 15, 16, 17],\n", + " [18, 19, 20, 21, 22, 23]])" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.reshape(2, -1)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "8e648c71", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14, 15],\n", + " [16, 17, 18, 19],\n", + " [20, 21, 22, 23]])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.reshape(3, -1)" + ] + }, + { + "cell_type": "markdown", + "id": "943cedca", + "metadata": {}, + "source": [ + "a.resize(12, 1)\n", + "a" + ] + }, + { + "cell_type": "markdown", + "id": "4a90137a", + "metadata": {}, + "source": [ + "Можно ли массив Numpy, состоящий из одного столбца и 12 строк, назвать одномерным?\n", + "Нет" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "f6167f91", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.ndim" + ] + }, + { + "cell_type": "markdown", + "id": "ce439d1f", + "metadata": {}, + "source": [ + "Создать массив из 3 строк и 4 столбцов, состоящий из случайных чисел с плавающей запятой из нормального распределения со средним, равным 0 и среднеквадратичным отклонением, равным 1.0. Получить из этого массива одномерный массив с таким же атрибутом size, как и исходный массив." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "265d4e76", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1.05991757, 1.6153279 , 0.53566443, 1.44992955],\n", + " [-1.41857913, 0.53596303, -0.63755995, -0.49108955],\n", + " [-0.17608754, 0.52883159, 1.32635745, -1.63115151]])" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.random.randn(3, 4)\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "ebc6d2f3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1.05991757, 1.6153279 , 0.53566443, 1.44992955, -1.41857913,\n", + " 0.53596303, -0.63755995, -0.49108955, -0.17608754, 0.52883159,\n", + " 1.32635745, -1.63115151])" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = a.flatten()\n", + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "28154be9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.size == b.size" + ] + }, + { + "cell_type": "markdown", + "id": "997307b8", + "metadata": {}, + "source": [ + "Создать массив a, состоящий из целых чисел, убывающих от 20 до 0 невключительно с интервалом 2." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "258b7aec", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([20, 18, 16, 14, 12, 10, 8, 6, 4, 2])" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.arange(20, 0, -2)\n", + "a" + ] + }, + { + "cell_type": "markdown", + "id": "6e863896", + "metadata": {}, + "source": [ + "Создать массив b, состоящий из 1 строки и 10 столбцов: целых чисел, убывающих от 20 до 1 невключительно с интервалом 2. В чем разница между массивами a и b?\n" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "63080e49", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([20, 18, 16, 14, 12, 10, 8, 6, 4, 2])" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = np.arange(20, 1, -2)\n", + "b" + ] + }, + { + "cell_type": "markdown", + "id": "5b57be6e", + "metadata": {}, + "source": [ + "Никакой разницы. В обоих случаях получаются одинаковые массивы" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "6faa7a31", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.array_equal(a, b)" + ] + }, + { + "cell_type": "markdown", + "id": "b917211c", + "metadata": {}, + "source": [ + " Вертикально соединить массивы a и b. a - двумерный массив из нулей, число строк которого больше 1 и на 1 меньше, чем число строк двумерного массива b, состоящего из единиц. Итоговый массив v должен иметь атрибут size, равный 10.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "74403449", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0.],\n", + " [0., 0.],\n", + " [0., 0.]])" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.zeros((3, 2))\n", + "a\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "2b968cb6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.prod(a.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "b56e0e09", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 1.],\n", + " [1., 1.]])" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = np.ones((2, 2))\n", + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "698e1ce3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.prod(b.shape)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "840b8905", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0.],\n", + " [0., 0.],\n", + " [0., 0.],\n", + " [1., 1.],\n", + " [1., 1.]])" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v = np.vstack((a, b))\n", + "v" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "c3ae195a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Массив a \n", + "[[0. 0.]\n", + " [0. 0.]\n", + " [0. 0.]]\n", + "Массив b \n", + "[[1. 1.]\n", + " [1. 1.]]\n" + ] + } + ], + "source": [ + "print('Массив a ', a, sep='\\n')\n", + "print('Массив b ', b, sep='\\n')" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "f4f00b83", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0.],\n", + " [0., 0.],\n", + " [0., 0.],\n", + " [1., 1.],\n", + " [1., 1.]])" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v = np.concatenate((a, b), axis = 0)\n", + "v" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "4c459fe9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v.size" + ] + }, + { + "cell_type": "markdown", + "id": "4b263429", + "metadata": {}, + "source": [ + "Создать одномерный массив а, состоящий из последовательности целых чисел от 0 до 12. Поменять форму этого массива, чтобы получилась матрица A (двумерный массив Numpy), состоящая из 4 строк и 3 столбцов. Получить матрицу At путем транспонирования матрицы A. Получить матрицу B, умножив матрицу A на матрицу At с помощью матричного умножения. Какой размер имеет матрица B? Получится ли вычислить обратную матрицу для матрицы B и почему?\n" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "a3b905f6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.arange(0, 12)\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "0ead98b7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 1, 2],\n", + " [ 3, 4, 5],\n", + " [ 6, 7, 8],\n", + " [ 9, 10, 11]])" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.arange(12).reshape(4, 3)\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "4c320711", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 3, 6, 9],\n", + " [ 1, 4, 7, 10],\n", + " [ 2, 5, 8, 11]])" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "At = a.transpose()\n", + "At" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "1835cf01", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5, 14, 23, 32],\n", + " [ 14, 50, 86, 122],\n", + " [ 23, 86, 149, 212],\n", + " [ 32, 122, 212, 302]])" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = np.dot(a, At)\n", + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "7aa671fb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "16" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b.size" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "id": "7a3edc6e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.linalg.matrix_rank(b) " + ] + }, + { + "cell_type": "markdown", + "id": "c09f534c", + "metadata": {}, + "source": [ + "Вычислить обратную матрицу для B невозможно, т.к. определитель матрицы B равен 0." + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "id": "b93a2bbc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.linalg.det(b)" + ] + }, + { + "cell_type": "markdown", + "id": "54c5eacc", + "metadata": {}, + "source": [ + "Инициализируйте генератор случайных числе с помощью объекта seed, равного 42.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "id": "dde7f753", + "metadata": {}, + "outputs": [], + "source": [ + "np.random.seed(42)" + ] + }, + { + "cell_type": "markdown", + "id": "196b0763", + "metadata": {}, + "source": [ + "Создайте одномерный массив c, составленный из последовательности 16-ти случайных равномерно распределенных целых чисел от 0 до 16 невключительно. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "id": "59ba350f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z = np.arange(0, 16)\n", + "z" + ] + }, + { + "cell_type": "markdown", + "id": "814fbcb3", + "metadata": {}, + "source": [ + "Поменяйте его форму так, чтобы получилась квадратная матрица C. Получите матрицу D, поэлементно прибавив матрицу B из предыдущего вопроса к матрице C, умноженной на 10. Вычислите определитель, ранг и обратную матрицу D_inv для D.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "id": "f5c69a3b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4.0" + ] + }, + "execution_count": 93, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.sqrt(z.size)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "id": "9098f791", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 1, 2, 3],\n", + " [ 4, 5, 6, 7],\n", + " [ 8, 9, 10, 11],\n", + " [12, 13, 14, 15]])" + ] + }, + "execution_count": 95, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "C = z.reshape((4, 4))\n", + "C" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "id": "618b478c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5, 14, 23, 32],\n", + " [ 14, 50, 86, 122],\n", + " [ 23, 86, 149, 212],\n", + " [ 32, 122, 212, 302]])" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "id": "6d4fa2cd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "C.shape == b.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "id": "2af40c71", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5, 24, 43, 62],\n", + " [ 54, 100, 146, 192],\n", + " [103, 176, 249, 322],\n", + " [152, 252, 352, 452]])" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "D = 10 * C + b\n", + "D" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "id": "8be59048", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-7.685903354004529e-25" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.linalg.det(D)" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "id": "6cf11d8a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1.10382344e+13, 5.26315789e-02, -3.31147031e+13,\n", + " 2.20764688e+13],\n", + " [-8.46264636e+13, 9.38249922e+13, 6.62294063e+13,\n", + " -7.54279349e+13],\n", + " [ 1.36138224e+14, -1.87649984e+14, -3.31147031e+13,\n", + " 8.46264636e+13],\n", + " [-6.25499948e+13, 9.38249922e+13, 0.00000000e+00,\n", + " -3.12749974e+13]])" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "D_inv = np.linalg.inv(D)\n", + "D_inv" + ] + }, + { + "cell_type": "markdown", + "id": "f8eedc21", + "metadata": {}, + "source": [ + "Приравняйте к нулю отрицательные числа в матрице D_inv, а положительные - к единице. Убедитесь, что в матрице D_inv остались только нули и единицы. С помощью функции numpy.where, используя матрицу D_inv в качестве маски, а матрицы B и C - в качестве источников данных, получите матрицу E размером 4x4. Элементы матрицы E, для которых соответствующий элемент матрицы D_inv равен 1, должны быть равны соответствующему элементу матрицы B, а элементы матрицы E, для которых соответствующий элемент матрицы D_inv равен 0, должны быть равны соответствующему элементу матрицы C.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "6b9b6dd1", + "metadata": {}, + "outputs": [], + "source": [ + "mask_positive = D_inv > 0\n", + "mask_negative = D_inv < 0" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "id": "9a873a78", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 1., 0., 1.],\n", + " [0., 1., 1., 0.],\n", + " [1., 0., 0., 1.],\n", + " [0., 1., 0., 0.]])" + ] + }, + "execution_count": 102, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "D_inv[mask_positive] = 1\n", + "D_inv[mask_negative] = 0\n", + "D_inv" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "id": "ac4e54f1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5, 14, 2, 32],\n", + " [ 4, 50, 86, 7],\n", + " [ 23, 9, 10, 212],\n", + " [ 12, 122, 14, 15]])" + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "E = np.where(D_inv, b, C)\n", + "E" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3ba3d816", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}