{"id":13700989,"url":"https://github.com/wkentaro/pytorch-for-numpy-users","last_synced_at":"2025-04-04T08:07:04.358Z","repository":{"id":30035937,"uuid":"91914165","full_name":"wkentaro/pytorch-for-numpy-users","owner":"wkentaro","description":"PyTorch for Numpy users. https://pytorch-for-numpy-users.wkentaro.com","archived":false,"fork":false,"pushed_at":"2023-02-05T15:40:12.000Z","size":64,"stargazers_count":699,"open_issues_count":0,"forks_count":89,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-03-28T07:06:09.673Z","etag":null,"topics":["numpy","pytorch"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wkentaro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["wkentaro"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2017-05-20T20:18:43.000Z","updated_at":"2025-03-25T17:23:20.000Z","dependencies_parsed_at":"2023-02-19T13:55:14.578Z","dependency_job_id":null,"html_url":"https://github.com/wkentaro/pytorch-for-numpy-users","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkentaro%2Fpytorch-for-numpy-users","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkentaro%2Fpytorch-for-numpy-users/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkentaro%2Fpytorch-for-numpy-users/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkentaro%2Fpytorch-for-numpy-users/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wkentaro","download_url":"https://codeload.github.com/wkentaro/pytorch-for-numpy-users/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247142052,"owners_count":20890652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["numpy","pytorch"],"created_at":"2024-08-02T20:01:13.198Z","updated_at":"2025-04-04T08:07:04.330Z","avatar_url":"https://github.com/wkentaro.png","language":"HTML","funding_links":["https://github.com/sponsors/wkentaro"],"categories":["HTML","Tutorials \u0026 books \u0026 examples｜教程 \u0026 书籍 \u0026 示例","Tutorials, books, \u0026 examples"],"sub_categories":["Other libraries｜其他库:","Other libraries:"],"readme":"\u003c!-- DO NOT EDIT THIS FILE MANUALLY. This file is generated by generate_readme.py from conversions.yaml so please edit and run them. --\u003e\n# PyTorch for Numpy users.\n\n![ci](https://github.com/wkentaro/pytorch-for-numpy-users/workflows/ci/badge.svg)\n![gh-pages](https://img.shields.io/github/deployments/wkentaro/pytorch-for-numpy-users/github-pages?label=gh-pages)\n\n\n[PyTorch](https://github.com/pytorch/pytorch.git) version of [_Torch for Numpy users_](https://github.com/torch/torch7/wiki/Torch-for-Numpy-users).  \nWe assume you use the latest PyTorch and Numpy.\n\n\n## How to contribute?\n\n```bash\ngit clone https://github.com/wkentaro/pytorch-for-numpy-users.git\ncd pytorch-for-numpy-users\nvim conversions.yaml\ngit commit -m \"Update conversions.yaml\"\n\n./run_tests.py\n```\n\n\n\u003ch2\u003eTypes\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy                 \u003c/th\u003e\u003cth\u003ePyTorch                                \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.ndarray\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.Tensor\u003c/pre\u003e               \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.float32\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.float32; torch.float\u003c/pre\u003e \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.float64\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.float64; torch.double\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.float16\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.float16; torch.half\u003c/pre\u003e  \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.int8\u003c/pre\u003e   \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.int8\u003c/pre\u003e                 \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.uint8\u003c/pre\u003e  \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.uint8\u003c/pre\u003e                \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.int16\u003c/pre\u003e  \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.int16; torch.short\u003c/pre\u003e   \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.int32\u003c/pre\u003e  \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.int32; torch.int\u003c/pre\u003e     \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.int64\u003c/pre\u003e  \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.int64; torch.long\u003c/pre\u003e    \u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eOnes and zeros\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy                       \u003c/th\u003e\u003cth\u003ePyTorch                        \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.empty((2, 3))\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.empty(2, 3)\u003c/pre\u003e  \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.empty_like(x)\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.empty_like(x)\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.eye\u003c/pre\u003e          \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.eye\u003c/pre\u003e          \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.identity\u003c/pre\u003e     \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.eye\u003c/pre\u003e          \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.ones\u003c/pre\u003e         \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.ones\u003c/pre\u003e         \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.ones_like\u003c/pre\u003e    \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.ones_like\u003c/pre\u003e    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.zeros\u003c/pre\u003e        \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.zeros\u003c/pre\u003e        \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.zeros_like\u003c/pre\u003e   \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.zeros_like\u003c/pre\u003e   \u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eFrom existing data\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy                                                                     \u003c/th\u003e\u003cth\u003ePyTorch                                                  \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.array([[1, 2], [3, 4]])\u003c/pre\u003e                                    \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.tensor([[1, 2], [3, 4]])\u003c/pre\u003e               \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.array([3.2, 4.3], dtype=np.float16)\nnp.float16([3.2, 4.3])\n\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.tensor([3.2, 4.3], dtype=torch.float16)\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.copy()\u003c/pre\u003e                                                      \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.clone()\u003c/pre\u003e                                    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.astype(np.float32)\u003c/pre\u003e                                          \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.type(torch.float32); x.float()\u003c/pre\u003e             \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.fromfile(file)\u003c/pre\u003e                                             \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.tensor(torch.Storage(file))\u003c/pre\u003e            \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.frombuffer\u003c/pre\u003e                                                 \u003c/td\u003e\u003ctd\u003e                                                         \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.fromfunction\u003c/pre\u003e                                               \u003c/td\u003e\u003ctd\u003e                                                         \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.fromiter\u003c/pre\u003e                                                   \u003c/td\u003e\u003ctd\u003e                                                         \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.fromstring\u003c/pre\u003e                                                 \u003c/td\u003e\u003ctd\u003e                                                         \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.load\u003c/pre\u003e                                                       \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.load\u003c/pre\u003e                                   \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.loadtxt\u003c/pre\u003e                                                    \u003c/td\u003e\u003ctd\u003e                                                         \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.concatenate\u003c/pre\u003e                                                \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.cat\u003c/pre\u003e                                    \u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eNumerical ranges\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy                           \u003c/th\u003e\u003cth\u003ePyTorch                            \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.arange(10)\u003c/pre\u003e       \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.arange(10)\u003c/pre\u003e       \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.arange(2, 3, 0.1)\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.arange(2, 3, 0.1)\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.linspace\u003c/pre\u003e         \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.linspace\u003c/pre\u003e         \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.logspace\u003c/pre\u003e         \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.logspace\u003c/pre\u003e         \u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eLinear algebra\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy                   \u003c/th\u003e\u003cth\u003ePyTorch                                                                                                     \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.dot\u003c/pre\u003e      \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.dot   # 1D arrays only\ntorch.mm    # 2D arrays only\ntorch.mv    # matrix-vector (2D x 1D)\n\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.matmul\u003c/pre\u003e   \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.matmul\u003c/pre\u003e                                                                                    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.tensordot\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.tensordot\u003c/pre\u003e                                                                                 \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.einsum\u003c/pre\u003e   \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.einsum\u003c/pre\u003e                                                                                    \u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eBuilding matrices\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy              \u003c/th\u003e\u003cth\u003ePyTorch               \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.diag\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.diag\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.tril\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.tril\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.triu\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.triu\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eAttributes\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy                \u003c/th\u003e\u003cth\u003ePyTorch                      \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.shape\u003c/pre\u003e  \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.shape; x.size()\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.strides\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.stride()\u003c/pre\u003e       \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.ndim\u003c/pre\u003e   \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.dim()\u003c/pre\u003e          \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.data\u003c/pre\u003e   \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.data\u003c/pre\u003e           \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.size\u003c/pre\u003e   \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.nelement()\u003c/pre\u003e     \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.dtype\u003c/pre\u003e  \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.dtype\u003c/pre\u003e          \u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eIndexing\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy                          \u003c/th\u003e\u003cth\u003ePyTorch                                             \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx[0]\u003c/pre\u003e               \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx[0]\u003c/pre\u003e                                    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx[:, 0]\u003c/pre\u003e            \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx[:, 0]\u003c/pre\u003e                                 \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx[indices]\u003c/pre\u003e         \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx[indices]\u003c/pre\u003e                              \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.take(x, indices)\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.take(x, torch.LongTensor(indices))\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx[x != 0]\u003c/pre\u003e          \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx[x != 0]\u003c/pre\u003e                               \u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eShape manipulation\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy                                                                            \u003c/th\u003e\u003cth\u003ePyTorch                                                                                                                     \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.reshape\u003c/pre\u003e                                                            \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.reshape; x.view\u003c/pre\u003e                                                                                               \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.resize()\u003c/pre\u003e                                                           \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.resize_\u003c/pre\u003e                                                                                                       \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e                                                                                 \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.resize_as_\u003c/pre\u003e                                                                                                    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx = np.arange(6).reshape(3, 2, 1)\nx.transpose(2, 0, 1)  # 012 -\u003e 201\n\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx = torch.arange(6).reshape(3, 2, 1)\nx.permute(2, 0, 1); x.transpose(1, 2).transpose(0, 1)  # 012 -\u003e 021 -\u003e 201\n\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.flatten\u003c/pre\u003e                                                            \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.view(-1)\u003c/pre\u003e                                                                                                      \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.squeeze()\u003c/pre\u003e                                                          \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.squeeze()\u003c/pre\u003e                                                                                                     \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx[:, None]; np.expand_dims(x, 1)\u003c/pre\u003e                                     \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx[:, None]; x.unsqueeze(1)\u003c/pre\u003e                                                                                      \u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eItem selection and manipulation\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy                                                                                                  \u003c/th\u003e\u003cth\u003ePyTorch                                                                                                                                                                                            \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.put\u003c/pre\u003e                                                                                     \u003c/td\u003e\u003ctd\u003e                                                                                                                                                                                                   \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.put\u003c/pre\u003e                                                                                      \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.put_\u003c/pre\u003e                                                                                                                                                                                 \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx = np.array([1, 2, 3])\nx.repeat(2)  # [1, 1, 2, 2, 3, 3]\n\u003c/pre\u003e                                 \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx = torch.tensor([1, 2, 3])\nx.repeat_interleave(2)  # [1, 1, 2, 2, 3, 3]\nx.repeat(2)  # [1, 2, 3, 1, 2, 3]\nx.repeat(2).reshape(2, -1).transpose(1, 0).reshape(-1)\n# [1, 1, 2, 2, 3, 3]\n\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.tile(x, (3, 2))\u003c/pre\u003e                                                                         \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.repeat(3, 2)\u003c/pre\u003e                                                                                                                                                                         \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx = np.array([[0, 1], [2, 3], [4, 5]])\nidxs = np.array([0, 2])\nnp.choose(idxs, x) # [0, 5]\n\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx = torch.tensor([[0, 1], [2, 3], [4, 5]])\nidxs = torch.tensor([0, 2])\nx[idxs, torch.arange(x.shape[1])] # [0, 5]\ntorch.gather(x, 0, idxs[None, :])[0] # [0, 5]\n\u003c/pre\u003e                       \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.sort\u003c/pre\u003e                                                                                    \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nsorted, indices = torch.sort(x, [dim])\u003c/pre\u003e                                                                                                                                                 \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.argsort\u003c/pre\u003e                                                                                 \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nsorted, indices = torch.sort(x, [dim])\u003c/pre\u003e                                                                                                                                                 \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.nonzero\u003c/pre\u003e                                                                                 \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.nonzero\u003c/pre\u003e                                                                                                                                                                          \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.where\u003c/pre\u003e                                                                                   \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.where\u003c/pre\u003e                                                                                                                                                                            \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx[::-1]\u003c/pre\u003e                                                                                    \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.flip(x, [0])\u003c/pre\u003e                                                                                                                                                                     \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.unique(x)\u003c/pre\u003e                                                                               \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.unique(x)\u003c/pre\u003e                                                                                                                                                                        \u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eCalculation\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy                    \u003c/th\u003e\u003cth\u003ePyTorch                              \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.min\u003c/pre\u003e        \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.min\u003c/pre\u003e                    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.argmin\u003c/pre\u003e     \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.argmin\u003c/pre\u003e                 \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.max\u003c/pre\u003e        \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.max\u003c/pre\u003e                    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.argmax\u003c/pre\u003e     \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.argmax\u003c/pre\u003e                 \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.clip\u003c/pre\u003e       \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.clamp\u003c/pre\u003e                  \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.round\u003c/pre\u003e      \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.round\u003c/pre\u003e                  \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.floor(x)\u003c/pre\u003e  \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.floor(x); x.floor()\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.ceil(x)\u003c/pre\u003e   \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.ceil(x); x.ceil()\u003c/pre\u003e  \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.trace\u003c/pre\u003e      \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.trace\u003c/pre\u003e                  \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.sum\u003c/pre\u003e        \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.sum\u003c/pre\u003e                    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.sum(axis=0)\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.sum(0)\u003c/pre\u003e                 \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.cumsum\u003c/pre\u003e     \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.cumsum\u003c/pre\u003e                 \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.mean\u003c/pre\u003e       \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.mean\u003c/pre\u003e                   \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.std\u003c/pre\u003e        \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.std\u003c/pre\u003e                    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.prod\u003c/pre\u003e       \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.prod\u003c/pre\u003e                   \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.cumprod\u003c/pre\u003e    \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.cumprod\u003c/pre\u003e                \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.all\u003c/pre\u003e        \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.all\u003c/pre\u003e                    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nx.any\u003c/pre\u003e        \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.any\u003c/pre\u003e                    \u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eArithmetic and comparison operations\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy                       \u003c/th\u003e\u003cth\u003ePyTorch         \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.less\u003c/pre\u003e         \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.lt\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.less_equal\u003c/pre\u003e   \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.le\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.greater\u003c/pre\u003e      \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.gt\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.greater_equal\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.ge\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.equal\u003c/pre\u003e        \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.eq\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.not_equal\u003c/pre\u003e    \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\nx.ne\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eRandom numbers\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy                               \u003c/th\u003e\u003cth\u003ePyTorch                      \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.random.seed\u003c/pre\u003e          \u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.manual_seed\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.random.permutation(5)\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.randperm(5)\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eNumerical operations\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\u003cth\u003eNumpy              \u003c/th\u003e\u003cth\u003ePyTorch               \u003c/th\u003e\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.sign\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.sign\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cpre\u003e\nnp.sqrt\u003c/pre\u003e\u003c/td\u003e\u003ctd\u003e\u003cpre\u003e\ntorch.sqrt\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwkentaro%2Fpytorch-for-numpy-users","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwkentaro%2Fpytorch-for-numpy-users","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwkentaro%2Fpytorch-for-numpy-users/lists"}