多个数组的Python apply_along_axis
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了多个数组的Python apply_along_axis,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1550字,纯文字阅读大概需要3分钟。
内容图文
![多个数组的Python apply_along_axis](/upload/InfoBanner/zyjiaocheng/707/df6da90ef7894338adc7a9375235b43d.jpg)
如果我有一个函数,f(x)以一个1d数组作为参数并产生1d数组作为输出,我可以使用numpy.apply_along_axis将函数应用于行有效的2d数组X的每一行f的论据.
现在我想用一个带两个参数的函数做类似的事情.
例如.我有一个函数f(x,y),它将两个1d数组作为参数,我还有两个2d数组X,Y都有n行.我想对每对行应用f,产生一个又有n行的数组.
如何以有效的方式实现这一目标?
我也对变体感兴趣,其中f需要更多参数或涉及更高维数组:
例如,f可以取3个形状为x,y,z的形状(2,2); (3); (5)
并产生形状的结果(4,4).
我有X,Y,Z形状(50,100,2,2); (50,100,3); (50,100,5)
并想要一个形状的结果(50,100,4,4)
解决方法:
看一下numpy.apply_along_axis的代码,我看到它只是迭代其他维度,将你的函数应用于每个’row’.有额外的代码允许维度大约2.但对于2d X它归结为:
result = np.empty_like(X)
for i, x in enumerate(X):
result[i] = func1d(x)
还有一些代码可以推断出结果的形状.例如,如果func1d是np.sum,则结果将是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
For example f could take 3 arrays x, y, z of shape (2,2); (3,); (5,) and produce a result of shape (4,4).
I have X, Y, Z of shapes (50, 100, 2, 2); (50, 100, 3); (50, 100, 5) and want a result of shape (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,:,:])
‘:’不是必需的,但要明确我们正在对2个维度进行索引,并对其余维度进行切片.如果你想迭代1和3维,并切片第2维,则需要它们.
内容总结
以上是互联网集市为您收集整理的多个数组的Python apply_along_axis全部内容,希望文章能够帮你解决多个数组的Python apply_along_axis所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。