这个小部分包括许多错误修复,以及一些新功能。它与1.3.0版本向后兼容。
新的日期时间数据类型支持处理数组中的日期
更快的导入时间
UFuncs扩展阵列封装机制
新的邻域迭代器(仅限C级)
npymath中的类C99复合函数
安 __array_prepare__ 方法已添加到ndarray中,以提供子类更大的灵活性,以便与ufunc和类似ufunc的函数进行交互。已提供日历 __array_wrap__, 它允许子类为结果设置数组类型,并在离开ufunc时填充元数据(如maskedarray的实现中所示)。对于某些应用程序,需要提供检查并填充元数据 在途中 . __array_prepare__ 因此,在UFUNC初始化输出数组之后,但在计算结果并填充它之前调用。这样,可以在操作之前进行检查并引发错误,这些操作可能会就地修改数据。
以前,如果扩展是针对numpy的版本n构建的,并且在numpy m<n的系统上使用,则导入_数组成功,这可能会导致崩溃,因为版本m在n中没有函数。从numpy 1.4.0开始,这将导致导入_数组失败,因此该错误将在早期被捕获。
新的邻域迭代器已添加到C API中。它可以用于迭代数组附近的项,并且可以自动处理边界条件。零填充和一填充,以及任意常量值、镜像填充和圆形填充。
增加了新的切比雪夫模和多项式模。新的多项式模块与numpy中当前的多项式支持不兼容,但与新的chebyshev模块非常相似。对大多数人来说,最明显的区别是,系数是由低功率到高功率指定的,而低功率函数则是如此。 not 使用切比雪夫和多项式类作为参数,切比雪夫和多项式类包括一个域。域之间的映射是线性替换,两个类可以相互转换,例如,允许将一个域中的切比雪夫级数展开为另一个域中的多项式。通常应该使用新的类而不是低级函数,后者是为那些希望构建自己的类的人提供的。
新模块不会自动导入到numpy名称空间中,它们必须与“import numpy.多项式”语句一起显式引入。
以下C函数已添加到C API中:
pyarray_GetndarrayFeatureVersion:返回 API 加载的numpy的版本。 pyarray与pyarray相似,但实现了通常的相关定义。不交换输入,对复杂阵列采用共轭。 pyarray-neighborhoodinternew——一个新的迭代器,用于在一个点的一个邻域上迭代,具有自动边界处理功能。它记录在C-API引用的迭代器部分,您可以在numpy.core中的multiarray_test.c.src文件中找到一些示例。
pyarray_GetndarrayFeatureVersion:返回 API 加载的numpy的版本。
pyarray与pyarray相似,但实现了通常的相关定义。不交换输入,对复杂阵列采用共轭。
pyarray-neighborhoodinternew——一个新的迭代器,用于在一个点的一个邻域上迭代,具有自动边界处理功能。它记录在C-API引用的迭代器部分,您可以在numpy.core中的multiarray_test.c.src文件中找到一些示例。
以下UFUNC已添加到C API中:
copysign-返回第一个参数的值,并从第二个参数复制符号。 nextafter-将第一个参数的下一个可表示的浮点值返回到第二个参数。
copysign-返回第一个参数的值,并从第二个参数复制符号。
nextafter-将第一个参数的下一个可表示的浮点值返回到第二个参数。
alpha处理器现在在numpy/npy_cpu.h中定义并可用。已修复parisc处理器的失败检测。定义如下:
NPY-CPU-HPPA:巴黎 npy-cpu-alpha:α
NPY-CPU-HPPA:巴黎
npy-cpu-alpha:α
不推荐使用的decorator:此decorator可用于避免在修饰测试有效地引发测试拒绝警告时混淆测试输出。 断言数组几乎等于两个浮点值数组的新方法。使用此函数,如果两个值之间没有太多可表示的浮点值,则认为这两个值是接近的,因此当值波动很大时,这两个值比断言数组几乎相等时更为健壮。 断言数组:如果两个浮点值之间有n个以上的可表示数字,则引发断言。 断言警告:如果可调用文件未生成适当类的警告,则在不更改警告状态的情况下引发断言错误。
不推荐使用的decorator:此decorator可用于避免在修饰测试有效地引发测试拒绝警告时混淆测试输出。
断言数组几乎等于两个浮点值数组的新方法。使用此函数,如果两个值之间没有太多可表示的浮点值,则认为这两个值是接近的,因此当值波动很大时,这两个值比断言数组几乎相等时更为健壮。
断言数组:如果两个浮点值之间有n个以上的可表示数字,则引发断言。
断言警告:如果可调用文件未生成适当类的警告,则在不更改警告状态的情况下引发断言错误。
在1.3.0中,我们开始在npymath库中放置可移植的C数学例程,这样人们就可以使用这些例程编写可移植的扩展。不幸的是,无法轻松链接到此库:在1.4.0中,已向numpy.distutils添加了支持,以便第三方可以重用此库。有关详细信息,请参阅CoreMath文档。
在numpy的早期版本中,如果输入数组包含重复项,则某些集合函数(intersect1d、setxor1d、setdiff1d和setmember1d)可能返回不正确的结果。现在,对于具有重复项的输入数组,这些方法可以正常工作。setmember1d已重命名为in1d,与接受重复数组的更改一样,它不再是一个集合操作,概念上类似于python运算符“in”的elementwise版本。所有这些函数现在都接受布尔关键字“假定唯一”。默认情况下,这是错误的,但如果输入数组已知不包含重复项,则可以将其设置为真,这样可以提高函数的执行速度。
numpy导入速度明显更快(从20%到30%,具体取决于平台和计算机) 排序函数现在将nan排序到末尾。 真正的排序顺序是 [南,南] 复杂排序顺序是 [R+RJ、R+NANJ、NAN+RJ、NAN+NANJ] 如果存在具有相同NaN位置的复数,则按照非NaN部分进行排序。 类型比较函数与新的NAN排序顺序一致。SearchSorted现在可用于包含NaN值的已排序数组。 复杂的划分更能抵抗溢出。 复杂的楼层划分更能抵抗溢流。
numpy导入速度明显更快(从20%到30%,具体取决于平台和计算机)
排序函数现在将nan排序到末尾。
真正的排序顺序是 [南,南] 复杂排序顺序是 [R+RJ、R+NANJ、NAN+RJ、NAN+NANJ]
真正的排序顺序是 [南,南]
复杂排序顺序是 [R+RJ、R+NANJ、NAN+RJ、NAN+NANJ]
如果存在具有相同NaN位置的复数,则按照非NaN部分进行排序。
类型比较函数与新的NAN排序顺序一致。SearchSorted现在可用于包含NaN值的已排序数组。
复杂的划分更能抵抗溢出。
复杂的楼层划分更能抵抗溢流。
以下函数已弃用:
关联:它采用新的关键字参数旧的行为。如果为真(默认值),则返回与以前相同的结果。如果为假,则计算常规相关性,并对复杂阵列采用共轭。旧的行为将在numpy 1.5中删除,并在1.4中引发拒绝警告。 unique1d:使用unique。unique1d将在1.4中发出一个弃用警告,并将在1.5中删除。 intersect1d_nu:使用intersect1d代替。Intersect1d_nu在1.4中提出一个弃用警告,将在1.5中删除。 setmember1d:改用in1d。setmember1d在1.4中发出拒绝警告,将在1.5中删除。
关联:它采用新的关键字参数旧的行为。如果为真(默认值),则返回与以前相同的结果。如果为假,则计算常规相关性,并对复杂阵列采用共轭。旧的行为将在numpy 1.5中删除,并在1.4中引发拒绝警告。
unique1d:使用unique。unique1d将在1.4中发出一个弃用警告,并将在1.5中删除。
intersect1d_nu:使用intersect1d代替。Intersect1d_nu在1.4中提出一个弃用警告,将在1.5中删除。
setmember1d:改用in1d。setmember1d在1.4中发出拒绝警告,将在1.5中删除。
以下引发错误:
在0-D阵列上操作时, numpy.max 其他功能仅接受 axis=0 , axis=-1 和 axis=None . 使用越界轴表示存在错误,因此numpy现在会对这些情况产生错误。 指定 axis > MAX_DIMS 不再允许;numpy现在引发错误,而不是表现得与for相似 axis=None .
在0-D阵列上操作时, numpy.max 其他功能仅接受 axis=0 , axis=-1 和 axis=None . 使用越界轴表示存在错误,因此numpy现在会对这些情况产生错误。
numpy.max
axis=0
axis=-1
axis=None
指定 axis > MAX_DIMS 不再允许;numpy现在引发错误,而不是表现得与for相似 axis=None .
axis > MAX_DIMS
numpy复杂类型现在保证与c99复杂类型兼容(如果平台上可用)。此外,复杂的ufunc现在使用平台c99函数而不是我们自己的。
multiarray和umath的源代码被分割成单独的逻辑编译单元。这将使源代码更适合新来者。
默认情况下,多数组(和umath)的每个文件都会像以前一样合并到一个文件中进行编译,但是如果npy_separate_compilation env变量设置为非负值,则会启用对每个文件的单独实验编译。这使得编译/调试周期在处理核心numpy时更快。
已添加的新功能:
npy_copysign npy_nextafter npy_cpack npy_creal npy_cimag npy_cabs npy_cexp npy_clog npy_cpow npy_csqr npy_ccos npy_csin
npy_copysign
npy_nextafter
npy_cpack
npy_creal
npy_cimag
npy_cabs
npy_cexp
npy_clog
npy_cpow
npy_csqr
npy_ccos
npy_csin