{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([37.2, 37.6, 36.8])" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "\n", "X = np.array([[1.2, 1.5, 1.8],\n", " [1.3, 1.4, 1.9],\n", " [1.1, 1.6, 1.7]])\n", "y = np.array([5, 10, 9]).T\n", "\n", "\n", "\n", "\n", "\n", "X.dot(y)\n", "\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 5, 10, 9])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3, 3)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.shape" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.04 µs ± 64.3 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)\n" ] } ], "source": [ "%timeit X.dot(y)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "20.1 µs ± 589 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n" ] } ], "source": [ "%%timeit\n", "total = []\n", "for i in range(X.shape[0]):\n", " each_price = 0\n", " for j in range(X.shape[1]):\n", " each_price += X[i,j] * y[j]\n", "# each_price = each_price + X[i,j] * y[j]\n", " total.append(round(each_price, 1))\n", "total " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 第二题" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([6, 9, 6, 1, 1, 2, 8, 7, 3, 5, 6, 3, 5, 3, 5, 8, 8, 2, 8, 1, 7, 8,\n", " 7, 2, 1, 2, 9, 9, 4, 9])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.seed(1)\n", "X = np.random.randint(1, 10, size=30)\n", "X" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[6, 9, 6],\n", " [1, 1, 2],\n", " [8, 7, 3],\n", " [5, 6, 3],\n", " [5, 3, 5],\n", " [8, 8, 2],\n", " [8, 1, 7],\n", " [8, 7, 2],\n", " [1, 2, 9],\n", " [9, 4, 9]])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.reshape(-1,3)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[6, 9, 6],\n", " [1, 1, 2],\n", " [8, 7, 3],\n", " [5, 6, 3],\n", " [5, 3, 5],\n", " [8, 8, 2],\n", " [8, 1, 7],\n", " [8, 7, 2],\n", " [1, 2, 9],\n", " [9, 4, 9]])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X1 = X.reshape(-1 ,3)\n", "X1" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([6, 2, 3, 3, 5, 2, 7, 2, 9, 9])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "last1 = X1[:, 2]\n", "last1" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([False, True, True, True, False, True, False, True, False,\n", " False])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "last1 <= 3" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([2, 3, 3, 2, 2])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 返回符合条件的位置,位置以True False来表示\n", "temp1 = last1[last1 <= 3]\n", "temp1" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([1, 2, 3, 5, 7]),)" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 返回符合条件的位置, 索引值\n", "np.where(last1 <= 3)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([6, 2, 3, 3, 5, 2, 7, 2, 9, 9])" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "last1" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([6, 5])" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "temp2 = last1[(last1 > 3) & (last1 <= 6)]\n", "temp2" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([7, 9, 9])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "temp3 = last1[last1 > 6]\n", "temp3" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "last1[last1 <= 3] = 0" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([6, 0, 0, 0, 5, 0, 7, 0, 9, 9])" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "last1" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "last1[(last1 > 3) & (last1 <= 6)] = 1" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 0, 0, 0, 1, 0, 7, 0, 9, 9])" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "last1" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "last1[last1 > 6] = 2" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 0, 0, 0, 1, 0, 2, 0, 2, 2])" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "last1 " ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "X_train = X1[:, 0:2]" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[6, 9],\n", " [1, 1],\n", " [8, 7],\n", " [5, 6],\n", " [5, 3],\n", " [8, 8],\n", " [8, 1],\n", " [8, 7],\n", " [1, 2],\n", " [9, 4]])" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "y_train = last1" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 0, 0, 0, 1, 0, 2, 0, 2, 2])" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_train" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1, 1],\n", " [8, 7],\n", " [5, 6],\n", " [8, 8],\n", " [8, 7]])" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train[y_train == 0] # 分类为0" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([False, True, True, True, False, True, False, True, False,\n", " False])" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_train == 0" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[6, 9],\n", " [5, 3]])" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train[y_train == 1] # 分类为1" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[8, 1],\n", " [1, 2],\n", " [9, 4]])" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train[y_train == 2] # 分类为2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 面试题" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "# 奇数替换成-1 不改变arr的值\n", "arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0, -1, 2, -1, 4, -1, 6, -1, 8, -1])" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.where(arr % 2 == 1, -1, arr)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0 1 2 3 4]\n", " [5 6 7 8 9]]\n", "[[1 1 1 1 1]\n", " [1 1 1 1 1]]\n" ] } ], "source": [ "# 垂直叠加两个数组\n", "a = np.arange(10).reshape(2, -1)\n", "print(a)\n", "b = np.repeat(1, 10).reshape(2, -1)\n", "print(b)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0, 1, 2, 3, 4, 1, 1, 1, 1, 1],\n", " [5, 6, 7, 8, 9, 1, 1, 1, 1, 1]])" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.concatenate([a, b], axis = 1)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0, 1, 2, 3, 4, 1, 1, 1, 1, 1],\n", " [5, 6, 7, 8, 9, 1, 1, 1, 1, 1]])" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.hstack([a, b])" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0, 1, 2, 3, 4],\n", " [5, 6, 7, 8, 9],\n", " [1, 1, 1, 1, 1],\n", " [1, 1, 1, 1, 1]])" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.vstack([a, b])" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0, 1, 2, 3, 4, 1, 1, 1, 1, 1],\n", " [5, 6, 7, 8, 9, 1, 1, 1, 1, 1]])" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.c_[a, b]" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([2, 4])" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 求两个集合的交互项\n", "a = np.array([1,2,3,2,3,4,3,4,5,6])\n", "b = np.array([7,2,10,2,7,4,9,4,9,8])\n", "np.intersect1d(a, b)" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 2, 3, 4])" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 从数组a中删除数组b中的所有项\n", "a = np.array([1,2,3,4,5])\n", "b = np.array([5,6,7,8,9])\n", "\n", "np.setdiff1d(a, b)" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([1, 3, 5, 7]),)" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 获取a和b元素匹配的位置\n", "a = np.array([1,2,3,2,3,4,3,4,5,6])\n", "b = np.array([7,2,10,2,7,4,9,4,9,8])\n", "\n", "np.where(a == b)" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([1, 3, 4]),)" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 如何从numpy数组中提取给定范围内的所有数字\n", "# 获取5到10之间的所有项目\n", "a = np.array([2, 6, 1, 9, 10, 3, 27])\n", "indexs = np.where((a >= 5) & (a <= 10))\n", "indexs" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 6, 9, 10])" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[indexs]" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 6, 9, 10])" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[(a >= 5) & (a <= 10)]" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0, 1, 2],\n", " [3, 4, 5],\n", " [6, 7, 8]])" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 如何交换二维numpy数组中的两列?\n", "# 在数组arr中交换列0和1\n", "arr = np.arange(9).reshape(3, 3)\n", "arr" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1, 0, 2],\n", " [4, 3, 5],\n", " [7, 6, 8]])" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr[:, [1, 0, 2]]" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[3, 4, 5],\n", " [0, 1, 2],\n", " [6, 7, 8]])" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr[[1, 0, 2], :]" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0, 1, 2],\n", " [3, 4, 5],\n", " [6, 7, 8]])" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr = np.arange(9).reshape(3, 3)\n", "arr" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[6, 7, 8],\n", " [3, 4, 5],\n", " [0, 1, 2]])" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 反转行\n", "arr[::-1]" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[2, 1, 0],\n", " [5, 4, 3],\n", " [8, 7, 6]])" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 反转列\n", "arr[:, ::-1]" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[[[ 0, 1, 2],\n", " [ 3, 4, 5]],\n", "\n", " [[ 6, 7, 8],\n", " [ 9, 10, 11]]],\n", "\n", "\n", " [[[12, 13, 14],\n", " [15, 16, 17]],\n", "\n", " [[18, 19, 20],\n", " [21, 22, 23]]],\n", "\n", "\n", " [[[24, 25, 26],\n", " [27, 28, 29]],\n", "\n", " [[30, 31, 32],\n", " [33, 34, 35]]]])" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr = np.arange(36).reshape(3, 2, 2, 3)\n", "arr" ] }, { "cell_type": "code", "execution_count": null, "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.11.3" } }, "nbformat": 4, "nbformat_minor": 2 }