python - 如何反转未知维度的numpy数组?
问题描述
我只是在学习 python,但决定通过重新编码和改进一些旧的基于 java 的学校 AI 项目来做到这一点。
我的项目涉及一个数学运算,它基本上是一个离散卷积运算,但没有一个函数时间反转。
所以,虽然在我最初的 java 项目中,我只是编写了所有代码来自己进行操作,因为我在 python 中工作,并且它有很棒的数学库,比如 numpy 和 scipy,我想我可以利用现有的卷积像scipy.convolve
. 但是,这需要我预先反转两个数组之一,以便在scipy.convolve
运行时反转其中一个数组以执行卷积,它实际上是不反转数组。(我也仍然不知道如何确保预先反转两个数组中的右边一个,以便两个数组仍然向前而不是向后滑动,但我想我应该这样问一个单独的问题。)
与只处理一维数据的 java 代码不同,我想将此项目扩展到多维数据。因此,虽然我了解到如果我有一个已知维度的 numpy 数组,例如一个三维数组 a,我可以完全反转数组(或者更确切地说,返回一个反转的视图,这要快得多),通过
a = a(::-1, ::-1, ::-1)
但是,这要求我::-1
对每个维度都有一个。如何在与上述代码具有相同结果的任意维度数组的方法中执行相同的反转?
解决方案
您可以使用np.flip
. 从文档中:
numpy.flip(m, axis=None)
沿给定轴反转数组中元素的顺序。
数组的形状被保留,但元素被重新排序。
注:与所有位置flip(m)
对应。m[::-1,::-1,...,::-1]
::-1
推荐阅读
- maven - 在 Jenkins 中找不到 maven 目录?
- java - Spring 应用程序接缝出现错误
- php - MySQL self join 获取有序的父子记录
- reactjs - 如何在 React Native Redux - Reducer 中实现以下内容
- html - 无法根据中心原点旋转齿轮
- virtual-reality - 是否可以使用 openvr 为 HMD 中的显示添加失真?
- c# - ASP .NET Core:如何缓存依赖于用户输入的数据?
- jquery - kendo ui jquery工具栏按钮徽章不起作用
- c++ - 按其子元素之一对 QJsonArray 进行排序
- computer-vision - RetinaNet 中的焦点损失