python - 如何遍历numpy数组的一个轴,返回内部数组而不是值
问题描述
我有几个数据数组,收集到一个数组中。我想循环它,并对每个内部数组进行操作。在 Numpy 中执行此操作的正确方法是什么
import numpy as np
a = np.arange(9)
a = a.reshape(3,3)
for val in np.nditer(a):
print(val)
这给出了:
0
1
2
3
4
5
6
7
8
但我想要的是(类似于):
array([0 1 2])
array([3 4 5])
array([6 7 8])
我一直在看这个页面:https ://docs.scipy.org/doc/numpy-1.15.0/reference/arrays.nditer.html但到目前为止还没有找到答案。我也知道我可以用一个普通的 for 循环来做到这一点,但我假设有一个更正确的方法。任何帮助将不胜感激,谢谢。
解决方案
您可以使用apply_along_axis
,但这取决于您的最终目标/输出是什么。这是一个显示这一点的简单示例。
a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
np.apply_along_axis(lambda x: x + 1, 0, a)
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
推荐阅读
- java - 一旦布尔值为真,如何关闭 JFrame?
- c# - 需要从装饰器设计模式中的组件派生装饰器
- spring-boot - 如何增加reactor WebClient的工作线程?
- qt - 在 ListView 中,如何将 currentIndex 或 currentItem 设置为动态创建的元素?
- node.js - 如何在 gitlab-runner 中启动服务器?
- asp.net - 为什么我们需要 ASP.NET 模拟:在 IIS 6.0 上为默认网站启用?
- wordpress - 如何通过编码在 WordPress 中创建照片库?
- r - 仅保留标签的文本
- ios - 未调用 TableViewCell 内的 UIPickerView 委托
- angular - 我们应该在 Angular 模板中使用管道而不是三元条件渲染吗?