用法:
dask.array.apply_along_axis(func1d, axis, arr, *args, dtype=None, shape=None, **kwargs)
沿给定轴将函数应用于一维切片。
此文档字符串是从 numpy.apply_along_axis 复制的。
可能存在与 Dask 版本的一些不一致之处。
这是通过
dask.array.map_blocks()
实现的numpy.apply_along_axis()
的阻塞变体- func1d:函数 (M,) -> (Nj…)
这个函数应该接受一维数组。它应用于沿指定轴的
arr
的一维切片。- axis:整数
arr
沿其切片的轴。- arr:ndarray (Ni…, M, Nk…)
输入数组。
- args:任何
func1d
的附加参数。- kwargs:任何
func1d
的附加命名参数。
- out:ndarray (Ni…, Nj…, Nk…)
输出数组。
out
的形状与arr
的形状相同,除了沿axis
维度。该轴被移除,并替换为与func1d
的返回值形状相等的新尺寸。因此,如果func1d
返回一个标量out
将比arr
少一个维度。
参数:
返回:
注意:
如果没有提供
dtype
或shape
中的任何一个,Dask 会尝试通过在虚拟数组上调用func1d
来确定它们。这可能会为dtype
或shape
生成不正确的值,因此我们建议提供它们。执行
func1d(a, *args, **kwargs)
其中func1d
对一维数组进行操作,而a
是arr
沿axis
的一维切片。这等效于(但比)以下使用
ndindex
和s_
,将ii
,jj
和kk
设置为索引元组:Ni, Nk = a.shape[:axis], a.shape[axis+1:] for ii in ndindex(Ni): for kk in ndindex(Nk): f = func1d(arr[ii + s_[:,] + kk]) Nj = f.shape for jj in ndindex(Nj): out[ii + jj + kk] = f[jj]
等效地,消除内部循环,这可以表示为:
Ni, Nk = a.shape[:axis], a.shape[axis+1:] for ii in ndindex(Ni): for kk in ndindex(Nk): out[ii + s_[...,] + kk] = func1d(arr[ii + s_[:,] + kk])
例子:
>>> def my_func(a): ... """Average first and last element of a 1-D array""" ... return (a[0] + a[-1]) * 0.5 >>> b = np.array([[1,2,3], [4,5,6], [7,8,9]]) >>> np.apply_along_axis(my_func, 0, b) array([4., 5., 6.]) >>> np.apply_along_axis(my_func, 1, b) array([2., 5., 8.])
对于返回一维数组的函数,
outarr
中的维数与arr
相同。>>> b = np.array([[8,1,7], [4,3,9], [5,2,6]]) >>> np.apply_along_axis(sorted, 1, b) array([[1, 7, 8], [3, 4, 9], [2, 5, 6]])
对于返回更高维数组的函数,将插入这些维度来代替
axis
维度。>>> b = np.array([[1,2,3], [4,5,6], [7,8,9]]) >>> np.apply_along_axis(np.diag, -1, b) array([[[1, 0, 0], [0, 2, 0], [0, 0, 3]], [[4, 0, 0], [0, 5, 0], [0, 0, 6]], [[7, 0, 0], [0, 8, 0], [0, 0, 9]]])
相关用法
- Python dask.array.apply_over_axes用法及代码示例
- Python dask.array.append用法及代码示例
- Python dask.array.around用法及代码示例
- Python dask.array.arctan用法及代码示例
- Python dask.array.arcsin用法及代码示例
- Python dask.array.asanyarray用法及代码示例
- Python dask.array.all用法及代码示例
- Python dask.array.arccos用法及代码示例
- Python dask.array.array用法及代码示例
- Python dask.array.atleast_3d用法及代码示例
- Python dask.array.allclose用法及代码示例
- Python dask.array.arctanh用法及代码示例
- Python dask.array.average用法及代码示例
- Python dask.array.atleast_1d用法及代码示例
- Python dask.array.asarray用法及代码示例
- Python dask.array.add用法及代码示例
- Python dask.array.argtopk用法及代码示例
- Python dask.array.atleast_2d用法及代码示例
- Python dask.array.argmin用法及代码示例
- Python dask.array.arccosh用法及代码示例
注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask.array.apply_along_axis。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。