栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python的多个数组的apply_along_axis

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python的多个数组的apply_along_axis

查看代码,

numpy.apply_along_axis
我发现它只是遍历其他维度,将您的函数应用于每个“行”。还有一些额外的代码可以使尺寸约为2。但是对于2d
X
,归结为:

result = np.empty_like(X)for i, x in enumerate(X):    result[i] = func1d(x)

还有一些代码可以推断出

result
应具有的形状。例如,如果
func1d
np.sum
result
则将为1d,而不是输入的2d。

因此,此功能没有特殊的“效率”。多个输入的扩展可以是普通的Python zip:

 result = np.empty_like(X) for i,(x,y) in enumerate(zip(X,Y)):     result[i] = func1d(x,y)

np.ndindex
是用于生成索引的便捷工具。值得看一下它的代码。它使用通用的numpy迭代器,
np.nditer
请参见:http
:
//docs.scipy.org/doc/numpy/reference/arrays.nditer.html

例如,f可以采用3个形状为(2,2)的数组x,y,z;(3,); (5,)并产生形状(4,4)的结果。

我有形状(50,100,2,2)的X,Y,Z;(50,100,3); (50,100,5)并想要形状的结果(50,100,4,4)

for i,j in np.ndindex(50,100):    result[i,j,:,:] = f(X[i,j,:,:], Y[i,j,:,:], Z[i,j,:,:])

“:”不是必需的,但要清楚地表明我们正在对其中两个维度进行索引,并对其余维度进行切片。如果要在第1维和第3维上进行迭代,然后对第2维切片,则需要使用它们。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624942.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号