{
  "__type": "IngestedDoc",
  "__tag": 4010,
  "_content": {},
  "_ordered_sections": [],
  "item_file": null,
  "item_line": null,
  "item_type": null,
  "aliases": [],
  "example_section_data": {
    "__type": "Section",
    "__tag": 4015,
    "children": [],
    "title": [],
    "level": 0,
    "target": null
  },
  "see_also": [],
  "signature": null,
  "references": null,
  "qa": "release:1.25.0-notes",
  "arbitrary": [
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [],
      "level": 0,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The NumPy 1.25.0 release continues the ongoing work to improve the handling and promotion of dtypes, increase the execution speed, and clarify the documentation. There has also been work to prepare for the future NumPy 2.0.0 release, resulting in a large number of new and expired deprecation. Highlights are:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Support for MUSL, there are now MUSL wheels."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Support the Fujitsu C/C++ compiler."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Object arrays are now supported in einsum"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Support for inplace matrix multiplication ("
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "@="
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We will be releasing a NumPy 1.26 when Python 3.12 comes out. That is needed because distutils has been dropped by Python 3.12 and we will be switching to using meson for future builds. The next mainline release will be NumPy 2.0.0. We plan that the 2.0 series will still support downstream projects built against earlier versions of NumPy."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The Python versions supported in this release are 3.9-3.11."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "NumPy 1.25.0 Release Notes"
        }
      ],
      "level": 0,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.core.MachAr"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is deprecated.  It is private API.  In names   defined in "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.core"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " should generally be considered private."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-22638"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/22638",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.finfo(None)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is deprecated."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23011"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23011",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.round_"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is deprecated. Use "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "np.round",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23302"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23302",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.product"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is deprecated. Use "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "np.prod",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23314"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23314",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.cumproduct"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is deprecated. Use "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "np.cumprod",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23314"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23314",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.sometrue"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is deprecated. Use "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "np.any",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23314"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23314",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.alltrue"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is deprecated. Use "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "np.all",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23314"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23314",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Only ndim-0 arrays are treated as scalars.  NumPy used to treat all arrays of   size 1 (e.g., "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.array([3.14])"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ") as scalars.  In the future, this will be   limited to arrays of ndim 0 (e.g., "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.array(3.14)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ").  The following   expressions will report a deprecation warning:"
                    }
                  ]
                },
                {
                  "__type": "Code",
                  "__tag": 4050,
                  "value": "a = np.array([3.14])\n  float(a)  # better: a[0] to get the numpy.float or a.item()\n\n  b = np.array([[3.14]])\n  c = numpy.random.rand(10)\n  c[0] = b  # better: c[0] = b[0, 0]",
                  "execution_status": null
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-10615"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/10615",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.find_common_type"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is deprecated.   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "numpy.find_common_type",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is now deprecated and its use should be replaced   with either "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.result_type",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy:result_type"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.promote_types",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy:promote_types"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".   Most users leave the second "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "scalar_types"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " argument to "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "find_common_type"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   as "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "[]"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " in which case "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.result_type"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.promote_types"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " are both   faster and more robust.   When not using "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "scalar_types"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " the main difference is that the replacement   intentionally converts non-native byte-order to native byte order.   Further, "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "find_common_type"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " returns "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "object"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " dtype rather than failing   promotion.  This leads to differences when the inputs are not all numeric.   Importantly, this also happens for e.g. timedelta/datetime for which NumPy   promotion rules are currently sometimes surprising."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "When the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "scalar_types"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " argument is not "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "[]"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " things are more complicated.   In most cases, using "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.result_type"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and passing the Python values   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "0"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "0.0"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", or "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "0j"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has the same result as using "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "int"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "float"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   or "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "complex"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " in "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "scalar_types",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "When "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "scalar_types"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is constructed, "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.result_type"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is the   correct replacement and it may be passed scalar values like "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.float32(0.0)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".   Passing values other than 0, may lead to value-inspecting behavior   (which "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.find_common_type"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " never used and NEP 50 may change in the future).   The main possible change in behavior in this case, is when the array types   are signed integers and scalar types are unsigned."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "If you are unsure about how to replace a use of "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "scalar_types"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or when   non-numeric dtypes are likely, please do not hesitate to open a NumPy issue   to ask for help."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-22539"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/22539",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Deprecations"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.core.machar"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.finfo.machar"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " have been removed."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-22638"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/22638",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "+arr"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " will now raise an error when the dtype is not   numeric (and positive is undefined)."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-22998"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/22998",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "A sequence must now be passed into the stacking family of functions   ("
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "stack"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "vstack"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "hstack"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "dstack"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "column_stack"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23019"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23019",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.clip"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " now defaults to same-kind casting. Falling back to   unsafe casting was deprecated in NumPy 1.17."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23403"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23403",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.clip"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " will now propagate "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.nan"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " values passed as "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "min"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "max"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".   Previously, a scalar NaN was usually ignored.  This was deprecated in NumPy 1.17."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23403"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23403",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.dual"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " submodule has been removed."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23480"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23480",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "NumPy now always ignores sequence behavior for an array-like (defining   one of the array protocols).  (Deprecation started NumPy 1.20)"
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23660"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23660",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The niche "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "FutureWarning"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " when casting to a subarray dtype in "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "astype"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   or the array creation functions such as "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "asarray"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is now finalized.   The behavior is now always the same as if the subarray dtype was   wrapped into a single field (which was the workaround, previously).   (FutureWarning since NumPy 1.20)"
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23666"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23666",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "=="
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "!="
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " warnings have been finalized.  The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "=="
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "!="
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   operators on arrays now always:"
                    }
                  ]
                },
                {
                  "__type": "BulletList",
                  "__tag": 4053,
                  "ordered": false,
                  "start": 1,
                  "children": [
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "raise errors that occur during comparisons such as when the arrays     have incompatible shapes ("
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "np.array([1, 2]) == np.array([1, 2, 3])"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ")."
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "return an array of all "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "True"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " or all "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "False"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " when values are     fundamentally not comparable (e.g. have different dtypes).  An example     is "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "np.array([\"a\"]) == np.array([1])"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "."
                            }
                          ]
                        },
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "This mimics the Python behavior of returning "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "False"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " and "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "True"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "     when comparing incompatible types like "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "\"a\" == 1"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " and "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "\"a\" != 1"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ".     For a long time these gave "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "DeprecationWarning"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " or "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "FutureWarning"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-22707"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/22707",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Nose support has been removed. NumPy switched to using pytest in 2018 and nose   has been unmaintained for many years. We have kept NumPy's nose support to   avoid breaking downstream projects who might have been using it and not yet   switched to pytest or some other testing framework. With the arrival of   Python 3.12, unpatched nose will raise an error. It is time to move on."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Emphasis",
                      "__tag": 4047,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Decorators removed"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ":"
                    }
                  ]
                },
                {
                  "__type": "BulletList",
                  "__tag": 4053,
                  "ordered": false,
                  "start": 1,
                  "children": [
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "raises"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "slow"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "setastest"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "skipif"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "knownfailif"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "deprecated"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "parametrize"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "_needs_refcount"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "These are not to be confused with pytest versions with similar names, e.g.,   pytest.mark.slow, pytest.mark.skipif, pytest.mark.parametrize."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Emphasis",
                      "__tag": 4047,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Functions removed"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ":"
                    }
                  ]
                },
                {
                  "__type": "BulletList",
                  "__tag": 4053,
                  "ordered": false,
                  "start": 1,
                  "children": [
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "Tester"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "import_nose"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "run_module_suite"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23041"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23041",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.testing.utils"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " shim has been removed.  Importing from the   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.testing.utils"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " shim has been deprecated since 2019, the shim has now   been removed. All imports should be made directly from "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.testing"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23060"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23060",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The environment variable to disable dispatching has been removed.   Support for the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NUMPY_EXPERIMENTAL_ARRAY_FUNCTION"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " environment variable has   been removed. This variable disabled dispatching with "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "__array_function__"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23376"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23376",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Support for "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "y="
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " as an alias of "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "out="
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed.   The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "fix"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "isposinf"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "isneginf"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " functions allowed using "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "y="
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " as a   (deprecated) alias for "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "out="
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". This is no longer supported."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23376"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23376",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Expired deprecations"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "busday_count"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " method now correctly handles cases where the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "begindates"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is later in time   than the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "enddates"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". Previously, the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "enddates"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " was included, even though the documentation states   it is always excluded."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23229"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23229",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "When comparing datetimes and timedelta using "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.equal"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.not_equal"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   numpy previously allowed the comparison with "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "casting=\"unsafe\""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".   This operation now fails. Forcing the output dtype using the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "dtype"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   kwarg can make the operation succeed, but we do not recommend it."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-22707"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/22707",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "When loading data from a file handle using "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.load"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   if the handle is at the end of file, as can happen when reading   multiple arrays by calling "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.load"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " repeatedly, numpy previously   raised "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ValueError"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " if "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "allow_pickle=False"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "OSError"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " if   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "allow_pickle=True"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". Now it raises "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "EOFError"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead, in both cases."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23105"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23105",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Compatibility notes"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Code based on earlier version of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "pad"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " that uses  "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "mode=\"wrap\""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will return different results when the padding size is larger than initial array."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.pad"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " with "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "mode=wrap"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now always fills the space with strict multiples of original data even if the padding size is larger than the initial array."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22575"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22575",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.pad"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " with "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "mode=wrap"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " pads with strict multiples of original data"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "long_t"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ulong_t"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " were aliases for "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "longlong_t"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ulonglong_t"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and confusing (a remainder from of Python 2).  This change may lead to the errors       "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "'long_t' is not a type identifier\n'ulong_t' is not a type identifier",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We recommend use of bit-sized types such as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "cnp.int64_t"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or the use of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "cnp.intp_t"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " which is 32 bits on 32 bit systems and 64 bits on 64 bit systems (this is most compatible with indexing). If C "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "long"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is desired, use plain "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "long"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "npy_long"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "cnp.int_t"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is also "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "long"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " (NumPy's default integer).  However, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "long"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is 32 bit on 64 bit windows and we may wish to adjust this even in NumPy. (Please do not hesitate to contact NumPy developers if you are curious about this.)"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22637"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22637",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Cython "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "long_t"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "ulong_t"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " removed"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The error message and type when a wrong "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "axes"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " value is passed to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ufunc(..., axes=[...])`"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " has changed. The message is now more indicative of the problem, and if the value is mismatched an "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "AxisError"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will be raised. A "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "TypeError"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will still be raised for invalid input types."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22675"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22675",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Changed error message and type for bad "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "axes"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " argument to "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "ufunc"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "If the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "where"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " keyword argument of a "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.ufunc",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:ufunc"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is a subclass of "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.ndarray",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:ndarray"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or is a duck type that defines "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "numpy.class.__array_ufunc__",
              "domain": null,
              "role": "func",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " it can override the behavior of the ufunc using the same mechanism as the input and output arguments. Note that for this to work properly, the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "where.__array_ufunc__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " implementation will have to unwrap the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "where"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " argument to pass it into the default implementation of the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ufunc"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or, for "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.ndarray",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:ndarray"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " subclasses before using "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "super().__array_ufunc__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23240"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23240",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Array-likes that define "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "__array_ufunc__"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " can now override ufuncs if used as "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "where"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "NumPy now defaults to exposing a backwards compatible subset of the C-API. This makes the use of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "oldest-supported-numpy"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " unnecessary. Libraries can override the default minimal version to be compatible with using      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "#define NPY_TARGET_VERSION NPY_1_22_API_VERSION",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "before including NumPy or by passing the equivalent "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "-D"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " option to the compiler. The NumPy 1.25 default is "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NPY_1_19_API_VERSION"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ".  Because the NumPy 1.19 C API was identical to the NumPy 1.16 one resulting programs will be compatible with NumPy 1.16 (from a C-API perspective). This default will be increased in future non-bugfix releases. You can still compile against an older NumPy version and run on a newer one."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "For more details please see "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "for-downstream-package-authors",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "dev:depending_on_numpy"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23528"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23528",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Compiling against the NumPy C API is now backwards compatible by default"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New Features"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The code path will call python operators on object dtype arrays, much like "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.dot"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.matmul"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-18053"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/18053",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.einsum"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " now accepts arrays with "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "object"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " dtype"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "It is now possible to perform inplace matrix multiplication via the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "@="
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " operator."
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": ">>> import numpy as np\n\n>>> a = np.arange(6).reshape(3, 2)\n>>> print(a)\n[[0 1]\n [2 3]\n [4 5]]\n\n>>> b = np.ones((2, 2), dtype=int)\n>>> a @= b\n>>> print(a)\n[[1 1]\n [5 5]\n [9 9]]",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-21120"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/21120",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Add support for inplace matrix multiplication"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Users may now choose to enable only a subset of the built CPU features at runtime by specifying the "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "NPY_ENABLE_CPU_FEATURES",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " environment variable. Note that these specified features must be outside the baseline, since those are always assumed. Errors will be raised if attempting to enable a feature that is either not supported by your CPU, or that NumPy was not built with."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22137"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22137",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Added "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "NPY_ENABLE_CPU_FEATURES"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " environment variable"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "NumPy now has a dedicated namespace making most exceptions and warnings available.  All of these remain available in the main namespace, although some may be moved slowly in the future. The main reason for this is to increase discoverability and add future exceptions."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22644"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22644",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "NumPy now has an "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.exceptions"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " namespace"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.linalg"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " functions that return tuples now return namedtuples. These functions are "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "eig()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "eigh()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "qr()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "slogdet()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "svd()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". The return type is unchanged in instances where these functions return non-tuples with certain keyword arguments (like "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "svd(compute_uv=False)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22786"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22786",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.linalg"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " functions return NamedTuples"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Custom dtypes that represent unicode strings or byte strings can now be passed to the string functions in "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.char"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22863"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22863",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "String functions in "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.char"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " are compatible with NEP 42 custom dtypes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "It is now possible to create a string dtype instance with a size without using the string name of the dtype. For example, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "type(np.dtype('U'))(8)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will create a dtype that is equivalent to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.dtype('U8')"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". This feature is most useful when writing generic code dealing with string dtype classes."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22963"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22963",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "String dtype instances can be created from the string abstract dtype classes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Support for Fujitsu compiler has been added. To build with Fujitsu compiler, run:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "Paragraph",
              "__tag": 4045,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "python setup.py build -c fujitsu"
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Fujitsu C/C++ compiler is now supported"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Support for SSL2 has been added. SSL2 is a library that provides OpenBLAS compatible GEMM functions.  To enable SSL2, it need to edit site.cfg and build with Fujitsu compiler.  See site.cfg.example."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22982"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22982",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "SSL2 is now supported"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Improvements"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NDArrayOperatorsMixin"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " class now specifies that it contains no "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__slots__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", ensuring that subclasses can now make use of this feature in Python."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23113"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23113",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "NDArrayOperatorsMixin"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " specifies that it has no "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "__slots__"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.power"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now returns a different result for "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "0^{non-zero}"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for complex numbers.  Note that the value is only defined when the real part of the exponent is larger than zero. Previously, NaN was returned unless the imaginary part was strictly zero.  The return value is either "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "0+0j"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "0-0j"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-18535"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/18535",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Fix power of complex zero"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "NumPy now has a new "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "DTypePromotionError"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " which is used when two dtypes cannot be promoted to a common one, for example      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "np.result_type(\"M8[s]\", np.complex128)",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "raises this new exception."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22707"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22707",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "DTypePromotionError"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Build and system information now contains information from Meson. "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "np.show_config",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now has a new optional parameter "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "mode"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to help customize the output."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22769"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22769",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineRole",
          "__tag": 4003,
          "value": "np.show_config",
          "domain": null,
          "role": null,
          "inventory": null
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " uses information from Meson"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Calling "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.ma.diff"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " with arguments prepend and/or append now returns a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "MaskedArray"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " with the input mask preserved."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Previously, a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "MaskedArray"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " without the mask was returned."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22776"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22776",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Fix "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.ma.diff"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " not preserving the mask when called with arguments prepend/append."
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many NumPy C functions defined for use in Cython were lacking the correct error indicator like "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "except -1"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "except *"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". These have now been added."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22997"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22997",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Corrected error handling for NumPy C-API in Cython"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.random.Generator.spawn",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.random._generator:Generator.spawn"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now allows to directly spawn new independent child generators via the "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.random.SeedSequence.spawn",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.random.bit_generator:SeedSequence.spawn"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " mechanism. "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.random.BitGenerator.spawn",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.random.bit_generator:BitGenerator.spawn"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " does the same for the underlying bit generator."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Additionally, "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "numpy.random.BitGenerator.seed_seq",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now gives direct access to the seed sequence used for initializing the bit generator. This allows for example      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "seed = 0x2e09b90939db40c400f8f22dae617151\nrng = np.random.default_rng(seed)\nchild_rng1, child_rng2 = rng.spawn(2)\n\n# safely use rng, child_rng1, and child_rng2",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Previously, this was hard to do without passing the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "SeedSequence"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " explicitly.  Please see "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.random.SeedSequence",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.random.bit_generator:SeedSequence"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for more information."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23195"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23195",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Ability to directly spawn random number generators"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "base"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " argument of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.logspace"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " can now be array-like if it is broadcastable against the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "start"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "stop"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " arguments."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23275"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23275",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy.logspace"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " now supports a non-scalar "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "base"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " argument"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Previously "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.ma.dot()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " only worked if "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "a"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "b"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " were both 2d. Now it works for non-2d arrays as well as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.dot()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23322"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23322",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.ma.dot()"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " now supports for non-2d arrays"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NpzFile"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " shows keys of loaded .npz file when printed."
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": ">>> npzfile = np.load('arr.npz')\n>>> npzfile\nNpzFile 'arr.npz' with keys arr_0, arr_1, arr_2, arr_3, arr_4...",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23357"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23357",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Explicitly show keys of .npz file in repr"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The new "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.dtypes"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " module now exposes DType classes and will contain future dtype related functionality. Most users should have no need to use these classes directly."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23358"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23358",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "NumPy now exposes DType classes in "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.dtypes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Currently, a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "*.npy"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " file containing a table with a dtype with metadata cannot be read back. Now, "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "np.save",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "np.savez",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " drop metadata before saving."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23371"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23371",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Drop dtype metadata before saving in .npy or .npz files"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "structured_to_unstructured"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now returns a view, if the stride between the fields is constant. Prior, padding between the fields or a reversed field would lead to a copy. This change only applies to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ndarray"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "memmap"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "recarray"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". For all other array subclasses, the behavior remains unchanged."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23652"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23652",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy.lib.recfunctions.structured_to_unstructured"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " returns views in more cases"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "When "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "uint64"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "int64"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " are mixed in NumPy, NumPy typically promotes both to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "float64"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ".  This behavior may be argued about but is confusing for comparisons "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "=="
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "<="
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", since the results returned can be incorrect but the conversion is hidden since the result is a boolean. NumPy will now return the correct results for these by avoiding the cast to float."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23713"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23713",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Signed and unsigned integers always compare correctly"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Performance improvements and changes"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "32-bit and 64-bit quicksort algorithm for np.argsort gain up to 6x speed up on processors that support AVX-512 instruction set."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks to "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "Intel corporation"
                }
              ],
              "url": "https://open.intel.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring this work."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23707"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23707",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Faster "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.argsort"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " on AVX-512 enabled processors"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Quicksort for 16-bit and 64-bit dtypes gain up to 15x and 9x speed up on processors that support AVX-512 instruction set."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks to "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "Intel corporation"
                }
              ],
              "url": "https://open.intel.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring this work."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22315"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22315",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Faster "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.sort"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " on AVX-512 enabled processors"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The overhead of the majority of functions in NumPy is now smaller especially when keyword arguments are used.  This change significantly speeds up many simple function calls."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23020"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23020",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "__array_function__"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " machinery is now much faster"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Generic "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ufunc.at"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " can be up to 9x faster. The conditions for this speedup:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "operands are aligned"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "no casting"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "If ufuncs with appropriate indexed loops on 1d arguments with the above conditions, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ufunc.at"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " can be up to 60x faster (an additional 7x speedup). Appropriate indexed loops have been added to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "add"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "subtract"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "multiply"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "floor_divide"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "maximum"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "minimum"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "fmax"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "fmin"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The internal logic is similar to the logic used for regular ufuncs, which also have fast paths."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks to the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "D. E. Shaw group"
                }
              ],
              "url": "https://deshaw.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring this work."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23136"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23136",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "ufunc.at"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " can be much faster"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Membership test on "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NpzFile"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will no longer decompress the archive if it is successful."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23661"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23661",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Faster membership test on "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "NpzFile"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Changes"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In rare cases, using mainly "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.r_"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " with scalars can lead to different results.  The main potential changes are highlighted by the following      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": ">>> np.r_[np.arange(5, dtype=np.uint8), -1].dtype\nint16  # rather than the default integer (int64 or int32)\n>>> np.r_[np.arange(5, dtype=np.int8), 255]\narray([  0,   1,   2,   3,   4, 255], dtype=int16)",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Where the second example returned      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "array([ 0,  1,  2,  3,  4, -1], dtype=int8)",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The first one is due to a signed integer scalar with an unsigned integer array, while the second is due to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "255"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " not fitting into "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "int8"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and NumPy currently inspecting values to make this work. (Note that the second example is expected to change in the future due to "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "NEP 50 <NEP50>",
              "domain": null,
              "role": "ref",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "; it will then raise an error.)"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22539"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22539",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.r_[]"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.c_[]"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " with certain scalar values"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "To speed up the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__array_function__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " dispatching, most NumPy functions are now wrapped into C-callables and are not proper Python functions or C methods. They still look and feel the same as before (like a Python function), and this should only improve performance and user experience (cleaner tracebacks). However, please inform the NumPy developers if this change confuses your program for some reason."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23020"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23020",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Most NumPy functions are wrapped into a C-callable"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "NumPy builds now depend on the C++ standard library, because the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.core._multiarray_umath"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " extension is linked with the C++ linker."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23601"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23601",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "C++ standard library usage"
        }
      ],
      "level": 2,
      "target": null
    }
  ],
  "local_refs": []
}