{
  "__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.11.0-notes",
  "arbitrary": [
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This release supports Python 2.6 - 2.7 and 3.2 - 3.5 and contains a number of enhancements and improvements. Note also the build system changes listed below as they may have subtle effects."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "No Windows (TM) binaries are provided for this release due to a broken toolchain. One of the providers of Python packages for Windows (TM) is your best bet."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "NumPy 1.11.0 Release Notes"
        }
      ],
      "level": 0,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Details of these improvements can be found below."
            }
          ]
        },
        {
          "__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 datetime64 type is now timezone naive."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "A dtype parameter has been added to "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "randint"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Improved detection of two arrays possibly sharing memory."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Automatic bin size estimation for "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.histogram"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Speed optimization of A @ A.T and dot(A, A.T)."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "New function "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.moveaxis"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for reordering array axes."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Highlights"
        }
      ],
      "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": "Numpy now uses "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "setuptools"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for its builds instead of plain distutils.   This fixes usage of "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "install_requires='numpy'"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " in the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "setup.py"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " files of   projects that depend on Numpy (see gh-6551).  It potentially affects the way   that build/install methods for Numpy itself behave though.  Please report any   unexpected behavior on the Numpy issue tracker."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Bento build support and related files have been removed."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Single file build support and related files have been removed."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Build System Changes"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The following changes are scheduled for Numpy 1.12.0."
            }
          ]
        },
        {
          "__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 Python 2.6, 3.2, and 3.3 will be dropped."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Relaxed stride checking will become the default. See the 1.8.0 release   notes for a more extended discussion of what this change implies."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The behavior of the datetime64 \"not a time\" (NaT) value will be changed   to match that of floating point \"not a number\" (NaN) values: all   comparisons involving NaT will return False, except for NaT != NaT which   will return True."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Indexing with floats will raise IndexError,   e.g., a[0, 0.0]."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Indexing with non-integer array_like will raise "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "IndexError"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   e.g., "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "a['1', '2']"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Indexing with multiple ellipsis will raise "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "IndexError"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   e.g., "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "a[..., ...]"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Non-integers used as index values will raise "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "TypeError"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   e.g., in "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "reshape"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "take"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", and specifying reduce axis."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In a future release the following changes will be made."
            }
          ]
        },
        {
          "__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": "rand"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " function exposed in "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.testing"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " will be removed. That   function is left over from early Numpy and was implemented using the   Python random module.  The random number generators from "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.random"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   should be used instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ndarray.view"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " method will only allow c_contiguous arrays to be   viewed using a dtype of different size causing the last dimension to   change.  That differs from the current behavior where arrays that are   f_contiguous but not c_contiguous can be viewed as a dtype type of   different size causing the first dimension to change."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Slicing a "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "MaskedArray"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " will return views of both data "
                    },
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "and"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " mask.   Currently the mask is copy-on-write and changes to the mask in the slice do   not propagate to the original mask. See the FutureWarnings section below for   details."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Future Changes"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "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": "In prior versions of NumPy the experimental datetime64 type always stored times in UTC. By default, creating a datetime64 object from a string or printing it would convert from or to local time      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "# old behavior\n>>> np.datetime64('2000-01-01T00:00:00')\nnumpy.datetime64('2000-01-01T00:00:00-0800')  # note the timezone offset -08:00",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A consensus of datetime64 users agreed that this behavior is undesirable and at odds with how datetime64 is usually used (e.g., by "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "pandas"
                }
              ],
              "url": "http://pandas.pydata.org",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "). For most use cases, a timezone naive datetime type is preferred, similar to the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "datetime.datetime"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " type in the Python standard library. Accordingly, datetime64 no longer assumes that input is in local time, nor does it print local times      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": ">>> np.datetime64('2000-01-01T00:00:00')\nnumpy.datetime64('2000-01-01T00:00:00')",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "For backwards compatibility, datetime64 still parses timezone offsets, which it handles by converting to UTC. However, the resulting datetime is timezone naive      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": ">>> np.datetime64('2000-01-01T00:00:00-08')\nDeprecationWarning: parsing timezone aware datetimes is deprecated;\nthis will raise an error in the future\nnumpy.datetime64('2000-01-01T08:00:00')",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "As a corollary to this change, we no longer prohibit casting between datetimes with date units and datetimes with time units. With timezone naive datetimes, the rule for casting from dates to times is no longer ambiguous."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "datetime64 changes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The return type of the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "linalg.norm"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " function is now floating point without exception.  Some of the norm types previously returned integers."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "linalg.norm"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " return type changes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The various fit functions in the numpy polynomial package no longer accept non-integers for degree specification."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "polynomial fit changes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This behaviour mimics that of other functions such as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.inner"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". If the two arguments cannot be cast to a common type, it could have raised a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "TypeError"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ValueError"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " depending on their order. Now, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.dot"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will now always raise a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "TypeError"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Emphasis",
          "__tag": 4047,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "np.dot"
            }
          ]
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " now raises "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "TypeError"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " instead of "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "ValueError"
        }
      ],
      "level": 2,
      "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": "In "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.lib.split"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " an empty array in the result always had dimension   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "(0,)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " no matter the dimensions of the array being split. This   has been changed so that the dimensions will be preserved. A   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "FutureWarning"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for this change has been in place since Numpy 1.9 but,   due to a bug, sometimes no warning was raised and the dimensions were   already preserved."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "FutureWarning to changed behavior"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "These operators are implemented with the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "remainder"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "floor_divide"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " functions respectively. Those functions are now based around "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "fmod"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and are computed together so as to be compatible with each other and with the Python versions for float types.  The results should be marginally more accurate or outright bug fixes compared to the previous results, but they may differ significantly in cases where roundoff makes a difference in the integer returned by "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "floor_divide"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Some corner cases also change, for instance, NaN is always returned for both functions when the divisor is zero, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "divmod(1.0, inf)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " returns "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "(0.0, 1.0)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " except on MSVC 2008, and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "divmod(-1.0, inf)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " returns "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "(-1.0, inf)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "%"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "//"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " operators"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Removed the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "check_return"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "inner_loop_selector"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " members of the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyUFuncObject"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " struct (replacing them with "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "reserved"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " slots to preserve struct layout). These were never used for anything, so it's unlikely that any third-party code is using them either, but we mention it here for completeness."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "C API"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In python 2, objects which are instances of old-style user-defined classes no longer automatically count as 'object' type in the dtype-detection handler. Instead, as in python 3, they may potentially count as sequences, but only if they define both a "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "__len__",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and a "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "__getitem__",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " method. This fixes a segfault and inconsistency between python 2 and 3."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "object dtype detection for old-style classes"
        }
      ],
      "level": 2,
      "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.histogram"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " now provides plugin estimators for automatically   estimating the optimal number of bins. Passing one of ['auto', 'fd',   'scott', 'rice', 'sturges'] as the argument to 'bins' results in the   corresponding estimator being used."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "A benchmark suite using "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Airspeed Velocity"
                        }
                      ],
                      "url": "https://asv.readthedocs.io/",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been added, converting the   previous vbench-based one. You can run the suite locally via "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "python   runtests.py --bench"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". For more details, see "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "benchmarks/README.rst"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "A new function "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.shares_memory"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " that can check exactly whether two   arrays have memory overlap is added. "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.may_share_memory"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " also now has   an option to spend more effort to reduce false positives."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "SkipTest"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "KnownFailureException"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " exception classes are exposed   in the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.testing"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " namespace. Raise them in a test function to mark   the test to be skipped or mark it as a known failure, respectively."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "f2py.compile"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has a new "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "extension"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " keyword parameter that allows the   fortran extension to be specified for generated temp files. For instance,   the files can be specifies to be "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "*.f90"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "verbose"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " argument is   also activated, it was previously ignored."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "A "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "dtype"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " parameter has been added to "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.random.randint"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   Random ndarrays of the following types can now be generated:"
                    }
                  ]
                },
                {
                  "__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.bool_"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ","
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "np.int8"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ", "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "np.uint8"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ","
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "np.int16"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ", "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "np.uint16"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ","
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "np.int32"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ", "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "np.uint32"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ","
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "np.int64"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ", "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "np.uint64"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ","
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "np.int_"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ", "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "np.intp"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The specification is by precision rather than by C type. Hence, on some   platforms "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.int64"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " may be a "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "long"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead of "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "long long"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " even if   the specified dtype is "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "long long"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " because the two may have the same   precision. The resulting type depends on which C type numpy uses for the   given precision. The byteorder specification is also ignored, the   generated arrays are always in native byte order."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "A new "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.moveaxis"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " function allows for moving one or more array axes   to a new position by explicitly providing source and destination axes.   This function should be easier to use than the current "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "rollaxis"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   function as well as providing more functionality."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "deg"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " parameter of the various "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.polynomial"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " fits has been   extended to accept a list of the degrees of the terms to be included in   the fit, the coefficients of all other terms being constrained to zero.   The change is backward compatible, passing a scalar "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "deg"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " will behave   as before."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "A divmod function for float types modeled after the Python version has   been added to the npy_math library."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New Features"
        }
      ],
      "level": 1,
      "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": "axis"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " parameter was added to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.gradient"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for consistency.  It allows to specify over which axes the gradient is calculated."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.gradient"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " now supports an "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "axis"
        },
        {
          "__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": "The function now internally calls the generic "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "npy_amergesort"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " when the type does not implement a merge-sort kind of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "argsort"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " method."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.lexsort"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " now supports arrays with object data-type"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "When constructing a new "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "MaskedArray"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " instance, it can be configured with an "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "order"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " argument analogous to the one when calling "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.ndarray"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". The addition of this argument allows for the proper processing of an "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "order"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " argument in several MaskedArray-related utility functions such as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.ma.core.array"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.ma.core.asarray"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.ma.core.MaskedArray"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " now supports an "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "order"
        },
        {
          "__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": "Creating a masked array with "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "mask=True"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " (resp. "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "mask=False"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ") now uses "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.ones"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " (resp. "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.zeros"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ") to create the mask, which is faster and avoid a big memory peak. Another optimization was done to avoid a memory peak and useless computations when printing a masked array."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Memory and speed improvements for masked arrays"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The function now uses the fallocate system call to reserve sufficient disk space on file systems that support it."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "ndarray.tofile"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " now uses fallocate on linux"
        }
      ],
      "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": "gemm"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " BLAS operations were used for all matrix products. Now, if the matrix product is between a matrix and its transpose, it will use "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "syrk"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " BLAS operations for a performance boost. This optimization has been extended to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "@"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.dot"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.inner"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.matmul"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Strong",
              "__tag": 4048,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "Note:"
                }
              ]
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " Requires the transposed and non-transposed matrices to share data."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Optimizations for operations of the form "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "A.T @ A"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "A @ A.T"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This matches the behavior of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "assert_raises"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.testing.assert_warns"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " can now be used as a context manager"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.random.shuffle"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is now much faster for 1d ndarrays."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Speed improvement for np.random.shuffle"
        }
      ],
      "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": "The method "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "build_src.generate_a_pyrex_source"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will remain available; it has been monkeypatched by users to support Cython instead of Pyrex.  It's recommended to switch to a better supported method of build Cython extensions though."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Pyrex support was removed from "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy.distutils"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The resulting object in that case will simply mimic iteration over a single array. This change obsoletes distinctions like"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "DefList",
              "__tag": 4033,
              "children": [
                {
                  "__type": "DefListItem",
                  "__tag": 4037,
                  "dt": {
                    "__type": "Paragraph",
                    "__tag": 4045,
                    "children": [
                      {
                        "__type": "Text",
                        "__tag": 4046,
                        "value": "if len(x) == 1:"
                      }
                    ]
                  },
                  "dd": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "shape = x[0].shape"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "DefListItem",
                  "__tag": 4037,
                  "dt": {
                    "__type": "Paragraph",
                    "__tag": 4045,
                    "children": [
                      {
                        "__type": "Text",
                        "__tag": 4046,
                        "value": "else:"
                      }
                    ]
                  },
                  "dd": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "shape = p.broadcast(\\*x).shape"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Instead, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.broadcast"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " can be used in all cases."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.broadcast"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " can now be called with a single argument"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This behaviour mimics that of other functions such as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.diagonal"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and ensures, e.g., that for masked arrays "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.trace(ma)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ma.trace()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " give the same result."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.trace"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " now respects array subclasses"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This behaviour mimics that of other functions such as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.inner"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". If the two arguments cannot be cast to a common type, it could have raised a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "TypeError"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ValueError"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " depending on their order. Now, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.dot"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will now always raise a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "TypeError"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.dot"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " now raises "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "TypeError"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " instead of "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "ValueError"
        }
      ],
      "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": "linalg.norm"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " function now does all its computations in floating point and returns floating results. This change fixes bugs due to integer overflow and the failure of abs with signed integers of minimum value, e.g., int8(-128). For consistency, floats are used even where an integer might work."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "linalg.norm"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " return type changes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Deprecations"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The F_CONTIGUOUS flag was used to signal that views using a dtype that changed the element size would change the first index. This was always problematical for arrays that were both F_CONTIGUOUS and C_CONTIGUOUS because C_CONTIGUOUS took precedence. Relaxed stride checking results in more such dual contiguous arrays and breaks some existing code as a result. Note that this also affects changing the dtype by assigning to the dtype attribute of an array. The aim of this deprecation is to restrict views to C_CONTIGUOUS arrays at some future time. A work around that is backward compatible is to use "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "a.T.view(...).T"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " instead. A parameter may also be added to the view method to explicitly ask for Fortran order views, but that will not be backward compatible."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Views of arrays in Fortran order"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "It is currently possible to pass in arguments for the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "order"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " parameter in methods like "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "array.flatten"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "array.ravel"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " that were not one of the following: 'C', 'F', 'A', 'K' (note that all of these possible values are both unicode and case insensitive). Such behavior will not be allowed in future releases."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Invalid arguments for array ordering"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The Python standard library random number generator was previously exposed in the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "testing"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " namespace as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "testing.rand"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Using this generator is not recommended and it will be removed in a future release. Use generators from "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.random"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " namespace instead."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Random number generator in the "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "testing"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " namespace"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In accordance with the Python C API, which gives preference to the half-open interval over the closed one, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.random.random_integers"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is being deprecated in favor of calling "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.random.randint"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", which has been enhanced with the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "dtype"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " parameter as described under \"New Features\". However, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.random.random_integers"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will not be removed anytime soon."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Random integer generation on a closed interval"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "FutureWarnings"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Currently a slice of a masked array contains a view of the original data and a copy-on-write view of the mask. Consequently, any changes to the slice's mask will result in a copy of the original mask being made and that new mask being changed rather than the original. For example, if we make a slice of the original like so, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "view = original[:]"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", then modifications to the data in one array will affect the data of the other but, because the mask will be copied during assignment operations, changes to the mask will remain local. A similar situation occurs when explicitly constructing a masked array using "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "MaskedArray(data, mask)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", the returned array will contain a view of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "data"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " but the mask will be a copy-on-write view of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "mask"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In the future, these cases will be normalized so that the data and mask arrays are treated the same way and modifications to either will propagate between views. In 1.11, numpy will issue a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "MaskedArrayFutureWarning"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " warning whenever user code modifies the mask of a view that in the future may cause values to propagate back to the original.  To silence these warnings and make your code robust against the upcoming changes, you have two options: if you want to keep the current behavior, call "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "masked_view.unshare_mask()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " before modifying the mask.  If you want to get the future behavior early, use "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "masked_view._sharedmask = False"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". However, note that setting the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "_sharedmask"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " attribute will break following explicit calls to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "masked_view.unshare_mask()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Assigning to slices/views of "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "MaskedArray"
        }
      ],
      "level": 2,
      "target": null
    }
  ],
  "local_refs": []
}