Numpy 1.10.0发行说明

这个版本支持python 2.6-2.7和3.2-3.5。

集锦

  • numpy.distutils现在通过传递给setup.py build的--parallel/-j参数支持并行编译。

  • numpy.distutils现在支持通过site.cfg进行额外的自定义,以控制编译参数,即运行库、额外的链接/编译标志。

  • 添加 np.linalg.multi_dot :计算单个函数调用中两个或多个数组的点积,同时自动选择最快的计算顺序。

  • 新功能 np.stack 提供一个通用接口,用于沿新轴联接一系列数组,补充 np.concatenate 用于沿现有轴连接。

  • 添加 nanprod 到NanFunctions集。

  • 支持python 3.5中的“@”运算符。

下降支座

  • dotblas模块已被删除。现在CBLAS支持多阵列。

  • testcalcs.py文件已被删除。

  • polytemplate.py文件已被删除。

  • npy-pyfile-dup和npy-pyfile-dupclose已从npy-3kcompat.h中删除。

  • splitCmdline已从numpy/distutils/exec_command.py中删除。

  • 尝试运行并获取已从numpy/distutils/command/config.py中删除的输出

  • 数组打印不再支持A.“”格式属性。

  • 关键词 skiprowsmissing 已从np.genfromtxt中删除。

  • 关键字 old_behavior 从np.correlate中删除。

未来变化

  • 在数组比较中 arr1 == arr2 ,许多涉及字符串或结构化数据类型(用于返回scalars)的角部案例现在发布 FutureWarningDeprecationWarning ,以后将更改为执行元素比较或引发错误。

  • np.lib.split 结果中的空数组始终具有维度 (0,) 不管数组的大小被拆分。在numpy 1.11中,行为将被更改,以便保留维度。一 FutureWarning 因为这种变化从numpy 1.9开始就已经存在了,但是,由于一个错误,有时没有发出警告,并且尺寸已经被保留了。

  • 安全评估类将在numpy 1.11中删除。

  • alterdot和restoredot函数将在numpy 1.11中删除。

有关这些更改的详细信息,请参阅下文。

兼容性说明

默认强制转换规则更改

就地操作的默认强制转换已更改为 'same_kind' . 例如,如果n是整数数组,而f是浮点数组,那么 n += f 会导致 TypeError 而在以前的numpy版本中,float将被静默地强制转换为int。在不太可能的情况下,示例代码不是实际的bug,可以通过将其重写为以向后兼容的方式更新 np.add(n, f, out=n, casting='unsafe') . 老年人 'unsafe' 自numpy 1.7以来,已弃用默认值。

numpy版本字符串

开发版本的numpy版本字符串已从更改为 x.y.z.dev-githashx.y.z.dev0+githash (注意+)以符合PEP 440。

轻松的步伐检查

默认情况下,npy_轻松步幅检查现在为真。

更新:在1.10.2中,由于背部兼容性的原因,npy_relaxed_stead_checking的默认值更改为false。需要更多时间才能将其设为默认值。作为路线图的一部分,还添加了F撊u连续而非C撊u连续数组的维度更改视图。

一维数组沿除 axis=0 加薪 IndexError

使用轴!=0自numpy 1.7以来引发了一个弃用警告,现在它引发了一个错误。

np.ravelnp.diagonalnp.diag 现在保留子类型

两者之间的行为不一致 x)()拉维尔(X) 以及 x-对角()对角线(x) ,方法保留子类型,而函数不保留。这是固定的,函数现在的行为与方法类似,除了在矩阵的情况下,保留子类型。为了向后兼容,矩阵是特殊情况下的,并且仍然像以前一样返回一维数组。如果需要保留矩阵子类型,请使用方法而不是函数。

罗拉西斯交换轴心 始终返回视图

以前,返回视图,除非没有更改轴的顺序,在这种情况下,返回输入数组。现在,在所有情况下都会返回一个视图。

非零 现在返回基准日历

以前,一维输入(返回基ndarray)和高维输入(保留子类)之间存在不一致。行为已经统一,并且返回现在将是一个基准日。子类仍然可以通过提供自己的 非零 方法。

计算机辅助编程接口

变化到 交换轴心 也适用于 PyArray_SwapAxes C函数,它现在在所有情况下都返回一个视图。

变化到 非零 也适用于 PyArray_Nonzero C函数,它现在在所有情况下都返回一个基ndarray。

dtype结构(pyarray_descr)在末尾有一个新成员来缓存其哈希值。这不应影响任何编写良好的应用程序。

对串联函数deprecationwarning的更改也会影响pyarray的concatenatearray,

Recarray字段返回类型

以前,属性和索引访问的recarray字段返回的类型不一致,字符串类型的字段返回为chararray。现在,通过属性或索引访问的字段将为非结构化类型的字段返回一个ndarray,为结构化类型的字段返回一个recarray。值得注意的是,这会影响包含带有空格的字符串的recarray,因为后面的空格是从chararray中删除的,但保留在字符串类型的ndarrays中。此外,嵌套结构字段的dtype.type现在是继承的。

重新排列视图

以recarray形式查看ndarray现在可以自动将数据类型转换为np.record。请参见新的记录数组文档。此外,查看具有非结构化数据类型的recarray不再将结果的类型转换为ndarray-结果将保持为recarray。

ufuncs的“out”关键字参数现在接受数组的元组

使用ufunc的“out”关键字参数时,可以为每个ufunc输出提供一个数组元组。对于具有单个输出的UFUNC,单个数组也是有效的“out”关键字参数。以前,一个数组可以在“out”关键字参数中提供,它将用作具有多个输出的ufunc的第一个输出,被弃用,并将导致 DeprecationWarning 现在和将来的错误。

字节数组索引现在引发索引错误

使用python 3中的字节字符串对ndarray进行索引现在将引发indexerror而不是valueerror。

包含带有数组的对象的屏蔽数组

对于此类(罕见)屏蔽数组,获取单个屏蔽项不再返回损坏的屏蔽数组,而是返回该项的完全屏蔽版本。

当遇到无效值时,中值警告并返回NaN

与mean类似,中位数和百分点值现在发出运行时警告并返回 NaN 在切片中, NaN 是存在的。若要在忽略无效值的同时计算中位数或百分位数,请使用 nanmediannanpercentile 功能。

numpy.ma.testutils提供的函数已更改

numpy.testing中的所有函数都曾在numpy.ma.testuils中可用,但并不是所有函数都重新定义为使用屏蔽数组。大多数这些函数现在已经从numpy.ma.testutils中删除,保留了一个小的子集,以保持向后兼容性。从长远来看,这有助于避免错误地使用错误的函数,但它可能会导致一些导入问题。

新特点

从site.cfg读取额外的标志

以前,依赖库编译和numpy本身的定制只能通过distuils包中的代码更改来实现。现在numpy.distutils从 site.cfg

  • runtime_library_dirs/rpath ,将运行时库目录设置为重写

    LD_LIBRARY_PATH

  • extra_compile_args ,向源的编译添加额外的标志

  • extra_link_args ,链接库时添加额外标志

这应该至少部分地完成用户自定义。

np.cbrt 计算实浮点的立方根

np.cbrt 包装c99 cube root函数 cbrt . 相比于 np.power(x, 1./3.) 它很好地定义为负实浮点数,并且速度更快。

numpy.distutils现在允许并行编译

旁路 --parallel=n-j n建立程序 扩展的编译现在在 n 并行进程。并行化仅限于一个扩展名内的文件,因此使用Cython的项目将不会受益,因为它从单个文件构建扩展名。

通用电气公司 有新的 max_rows 论点

A max_rows 参数已添加到 通用电气公司 限制在单个调用中读取的行数。使用此功能,可以通过对函数进行重复调用来读取存储在单个文件中的多个数组。

新功能 np.broadcast_to 用于调用数组广播

np.broadcast_to 根据numpy的广播规则手动将数组广播到给定的形状。该功能类似于广播阵列,事实上,广播阵列已重写为内部使用广播阵列,但只需要一个阵列。

新建上下文管理器 clear_and_catch_warnings 用于测试警告

当python发出警告时,它会在module属性中记录在导致该警告的模块中发出的警告。 __warningregistry__ . 一旦发生这种情况,就不可能再次发出警告,除非您清除 __warningregistry__ . 这使得测试警告变得困难和脆弱,因为如果您的测试是在另一个已经引起警告的测试之后进行的,那么您将无法发出或测试警告。上下文管理器 clear_and_catch_warnings 在进入时清除模块注册表中的警告,并在退出时重置它们,这意味着可以重新引发警告。

cov 有新的 fweightsaweights 参数

这个 fweightsaweights 参数通过对观测向量应用两种类型的权重,为协方差计算添加了新的功能。一个数组 fweights 指示每个观测向量的重复次数,以及 aweights 提供它们的相对重要性或概率。

在python 3.5中支持“@”运算符+

python 3.5增加了对pep465中提出的矩阵乘法运算符“@”的支持。已经实现了对这一点的初步支持,以及等效功能 matmul 也被添加用于测试目的,并在早期的Python版本中使用。该函数是初步函数,其可选参数的顺序和数目可能会发生更改。

新论点 norm 至FFT功能

默认的规范化有未标度的直接变换和按比例缩放的反向变换 1/n . 通过设置关键字参数,可以获得一元转换。 norm"ortho" (默认为 None )这样,直接变换和反变换都将按 1/\\sqrt{{n}} .

改进

np.poly 现在将整数输入强制转换为浮点

np.poly 现在将一维整数类型的输入数组强制转换为双精度浮点,以防止在计算Monic多项式时整数溢出。通过传入对象类型的数组(例如用python ints填充),仍然可以获得更高的精度结果。

np.interp 现在可以与周期函数一起使用

np.interp 现在有了一个新参数 时期 提供输入数据的周期 xp . 在这种情况下,输入数据被适当地归一化为给定的周期,并且在 xp 为了关闭上一个周期和下一个周期,导致正确的插值行为。

np.pad 支持更多的输入类型 pad_widthconstant_values

constant_values 参数现在接受numpy数组和浮点值。支持numpy数组作为的输入 pad_width ,如果其值不是整型,则引发异常。

np.argmaxnp.argmin 现在支持一个 out 论点

这个 out 参数已添加到 np.argmaxnp.argmin 为了与…保持一致 ndarray.argmaxndarray.argmin . 新参数的行为与这些方法中的行为完全相同。

检测和使用更多的系统C99复杂功能

所有功能 in complex.h 现在检测到。以下函数有新的回退实现。

  • npy_ctan,

  • npy ou cacos、npy ou casin、npy ou catan

  • NPY公司,NPY公司,NPY公司,

  • NPY-Cacosh、NPY-Cashinh、NPY-Catanh

由于这些改进,返回值会有一些小的变化,特别是对于角情况。

np.loadtxt 支持由 float.hex 方法

弦由 float.hex 看起来像 0x1.921fb54442d18p+1 ,因此这不是用于表示无符号整数类型的十六进制。

np.isclose 正确处理整数数据类型的最小值

为了正确处理整数类型的最小值, np.isclose 现在将在比较期间强制转换为浮点数据类型。这使其行为与 np.allclose .

np.allclose 使用 np.isclose 内部的。

np.allclose 现在使用 np.isclose 内部和继承通过设置将nan作为相等项进行比较的能力 equal_nan=True . 子类,例如 np.ma.MaskedArray ,现在也被保存。

np.genfromtxt 现在正确处理大整数

np.genfromtxt 现在正确处理大于 2**31-1 在32位系统上,大于 2**63-1 在64位系统上(它以前与 OverflowError 在这些情况下)。大于的整数 2**63-1 转换为浮点值。

np.loadnp.save 具有pickle向后兼容性标志

功能 np.loadnp.save 具有用于控制pickled python对象向后兼容性的其他关键字参数。这使得numpy on python 3能够加载包含在python 2上生成的对象数组的npy文件。

对更复杂的基类的maskedarray支持

将删除基本类行为类似于普通数组的内置假设。尤其是,设置和获取元素和范围将考虑 __setitem____getitem__ 和算术将尊重 __add____sub__ 等。

变化

Dotblas功能已移动到多数组

CBLAS版本的DOT、INNER和VDOT已集成到多阵列模块中。特别是,vdot现在是一个多数组函数,这在以前是没有的。

对Gufunc签名合规性的更严格检查

现在,对通用函数的输入与函数的签名进行更严格的检查:所有核心维度现在都要求存在于输入数组中;具有相同标签的核心维度必须具有完全相同的大小;并且输出核心维度必须通过相同标签、输入核心维度或传入维度来指定。输出数组。

从返回的视图 np.einsum 可写

视图返回者 np.einsum 现在只要输入数组是可写的,就可以写。

np.argmin 跳过nat值

np.argmin 现在跳过datetime64和timedelta64数组中的nat值,使其与 np.minnp.argmaxnp.max .

贬抑

涉及字符串或结构化数据类型的数组比较

通常,对数组的比较操作执行元素比较,并返回布尔数组。但在某些角情况下,特别是涉及字符串的是结构化数据类型,numpy历史上返回的是标量。例如::

### Current behaviour

np.arange(2) == "foo"
# -> False

np.arange(2) < "foo"
# -> True on Python 2, error on Python 3

np.ones(2, dtype="i4,i4") == np.ones(2, dtype="i4,i4,i4")
# -> False

从1.9开始的持续工作,到1.10,这些比较现在将提高 FutureWarningDeprecationWarning ,以后将对它们进行修改,使其与其他比较操作更加一致,例如:

### Future behaviour

np.arange(2) == "foo"
# -> array([False, False])

np.arange(2) < "foo"
# -> error, strings and numbers are not orderable

np.ones(2, dtype="i4,i4") == np.ones(2, dtype="i4,i4,i4")
# -> [False, False]

SafeEval

numpy/lib/utils.py中的safeeval类已弃用,将在下一版本中删除。

Alterdot,恢复

alterdot和restoredot函数不再执行任何操作,因此被弃用。

包装机

现在不推荐使用这些加载包的方法。

对corcoef的偏倚,ddof论据

的值 biasddof 的参数 corrcoef 函数在相关系数所隐含的除法中被取消,因此对返回值没有影响。

我们现在不赞成这些论点 corrcoef 以及蒙面数组版本 ma.corrcoef .

因为我们在贬低 bias 参数 ma.corrcoef 我们也不赞成 allow_masked 参数作为位置参数,因为它的位置将随着 bias . allow_masked 将在适当的时候成为只包含关键字的参数。

数据类型字符串表示形式更改

从1.6开始,从其字符串表示形式创建一个dtype对象,例如 'f4' 如果大小与现有类型不对应,则将发出一个取消预测警告,默认情况下将为该类型创建默认大小的数据类型。从这个版本开始,这将引发 TypeError .

唯一的例外是对象数据类型,其中 'O4''O8' 仍将发出弃用警告。此依赖于平台的表示将在下一个版本中引发错误。

为准备即将进行的更改,对象数据类型的字符串表示法,即 np.dtype(object).str ,不再包含项目大小,即将返回 '|O' 而不是 '|O4''|O8' 像以前一样。