NumPy 中文文档

version: 1.14.0

Built with Teadocs

通用函数相关

# 通用函数相关

# ufunc

# 可选关键字参数

所有函数都使用可选的关键字参数。其中大多数代表高级用法,通常不会被使用。

out 关键字

1.6版本新特性

第一个输出可以作为位置参数或关键字参数提供。关键字‘out’参数与位置参数不兼容。

1.10版本新特性

‘out’关键字参数应该是一个元组,每个输出有一个条目(对于由ufunc分配的数组,可以是None)。对于具有单个输出的函数,传递单个数组(而不是包含单个数组的元组)也是有效的。

将“out”关键字参数中的单个数组传递给具有多个输出的ufunc是不可取的,这将在numpy 1.10中引发一个警告,并在未来的版本中引发一个错误。

where 关键字

1.7版本新特性

接受与操作数一起广播的布尔数组。True的值指示要计算该位置的ufunc,false的值指示要在输出中单独保留该值。这个参数不能用在广义函数上,因为它们采用非标量输入.

casting 关键字

1.6版本新特性

可能是‘no’、‘iquiv’、‘安全’、‘同类型’或‘不安全’。有关参数值的解释,请参见can_cast。

提供允许何种类型的转换的策略。为了与以前版本的NumPy兼容,对于numpy<;1.7,默认为‘不安全’。在Numpy1.7中,开始了向“同一种类型”的转换,在此过程中,函数生成了“不安全”规则下允许的调用而不是“同一种”规则下允许的调用的DeprosionationWarning。从numpy1.10到更高版本,缺省值是‘SHAMENT_KYPE’。

order 关键字

1.6版本新特性

指定输出数组的计算迭代顺序/内存布局。默认值为“K”。“C”意味着输出应该是C-连续的,“F”意味着F-连续的,“A”意味着F-连续的,如果输入是F-连续的,并且不是C-连续的,否则,C-连续的意思是‘K’意味着尽可能紧密地匹配输入的元素顺序。

dtype 关键字

1.6版本新特性

重写计算和输出数组的dtype。类似于签名。

subok 关键字

1.6版本新特性

默认值为true。如果设置为false,输出将始终是严格的数组,而不是子类型。

signature 关键字

数据类型、数据类型的元组或指示ufunc的输入和输出类型的特殊签名字符串。此参数允许你为基础计算中使用的1-d循环提供特定的签名。如果为ufunc指定的循环不存在,则会引发TypeError。通常,通过将输入类型与可用的类型进行比较,并搜索具有所有输入都可以安全转换到的数据类型的循环,可以自动找到合适的循环。这个关键字参数允许你绕过搜索并选择一个特定的循环。ufunc对象的type属性提供可用签名的列表。为了向后兼容,这个参数也可以作为sig提供,尽管长格式更受欢迎。请注意,这不应与存储在ufunc对象的签名属性中的通用ufunc签名相混淆。

extobj 关键字

长度为1,2或3的列表,指定ufunc缓冲区大小,错误模式整数和错误回调函数。 通常,这些值在特定于线程的字典中查找。 将它们传递到此处会绕过查找并使用为错误模式提供的低级规范。 例如,这可能是有用的,作为在循环中需要对小数组进行许多ufunc调用的计算的优化。

# 属性

通用功能具有一些信息属性。 没有属性可以设置。

  • doc 每个ufunc的文档字符串。 docstring的第一部分是根据输出数量,名称和输入数量动态生成的。 docstring的第二部分在创建时提供并与ufunc一起存储。
  • name ufunc的名称。
    ufunc.nin 输入数量。
    ufunc.nout 输出数量。
    ufunc.nargs 参数的数量。
    ufunc.ntypes 类型数量。
    ufunc.types 返回包含input-> output类型的列表。
    ufunc.identity 身份值。
    ufunc.signature 广义ufunc操作的核心元素的定义。

# 方法

所有ufunc都有四种方法。但是,这些方法仅对采用两个输入参数并返回一个输出参数的标量ufunc有意义。试图在其他ufunc上调用这些方法会导致ValueError。类似reduce的方法都采用axis关键字,dtype关键字和out关键字,并且数组必须都具有维> = 1.轴关键字指定将在其上进行缩减的数组的轴(具有负数)值倒计时)。通常,它是一个整数,但对于ufunc.reduce,它也可以是int的元组,一次减少多个轴,或者无,以减少所有轴。 dtype关键字允许你管理在天真地使用ufunc.reduce时出现的一个非常常见的问题。有时你可能拥有某种数据类型的数组,并希望将其所有元素相加,但结果不适合数组的数据类型。如果你有一个单字节整数数组,通常会发生这种情况。 dtype关键字允许你更改减少发生的数据类型(以及输出的类型)。因此,你可以确保输出是一种精度足以处理输出的数据类型。改变减少类型的责任主要取决于你。有一个例外:如果没有为“add”或“multiply”操作减少dtype,那么如果输入类型是整数(或布尔)数据类型且小于int_的大小数据类型,它将内部向上转换为int_(或uint)数据类型。最后,out关键字允许你提供一个输出数组(对于单输出ufunc,这是当前唯一支持的;对于将来的扩展,但是,可以传入一个带有单个参数的元组)。如果给出out,则忽略dtype参数。

Ufuncs还有第五种方法,允许使用花式索引来执行就地操作。在使用花式索引的维度上不使用缓冲,因此花式索引可以多次列出项目,并且将对该项目的上一个操作的结果执行操作。

  • ufunc.reduce(a[, axis, dtype, out, keepdims]) 通过沿一个轴应用ufunc,将维度减一。
  • ufunc.accumulate(array[, axis, dtype, out]) 累计将运算符应用于所有元素的结果。
  • ufunc.reduceat(a, indices[, axis, dtype, out]) 在单个轴上使用指定切片执行(局部)缩减。
  • ufunc.outer(A, B, **kwargs) 将ufunc op应用于所有对(a, b),其中A和B在B中。
  • ufunc.at(a, indices[, b]) 对'index'指定的元素在操作数'a'上执行无缓冲的就地操作。
警告

对数组类型进行类似reduce的操作,其数据类型的范围“太小”,无法处理结果,将以静默方式进行换行。应该使用dtype来增加减少发生的数据类型的大小。