- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Numpy 的 rot90 函数 promise 使用轴参数将 2d 或更高的数组旋转 90 度。方法:
numpy.rot90(m, k=1, axes=(0, 1))[source]
Rotate an array by 90 degrees in the plane specified by axes.
Rotation direction is from the first towards the second axis.
我对轴部分很困惑。对象可以绕 x、y 或 z 轴旋转。通常,这是由诸如 Vector3f 之类的东西定义的,其中 3 个浮点数定义了轴值(例如 (0, 0, 1) 围绕 z 轴旋转。)我不明白这两个数字如何用于旋转3d 对象,不应该像 Vector3f 一样是 3 吗?谁能帮助我理解这两个轴的含义,以及分别用于绕 x、y 和 z 轴旋转的两个数字是什么?我尝试了许多不同的数字组合,它们都有不同的结果(我不能输入两个相同的数字),但我不知道如何用两个数字获得足够的信息(k 代表次数旋转。)
最佳答案
我喜欢使用具有不同值和维度的样本数组,例如 np.arange(24).reshape(2,3,4)
.
在这种情况下,我还查看了代码。经过一些初步确定axes
和 k
是对的,它根据 k
的 4 个可能值做不同的事情。 .axes
定义一个“平面”。使用 3d 阵列,axes=(0,1)
可以认为是绕第三轴 (2) 旋转,想象一个垂直于该“平面”的“矢量”。但代码中使用的是这些轴值。虽然我怀疑我们可以使用基于三角的旋转矩阵构造等效的操作,但此代码不进行任何计算。 (请注意,整数不会更改为浮点数。)k=0
什么都不改变:
In [104]: np.rot90(m,k=0, axes=(0,1))
Out[104]:
array([[[ 0, 1, 2, 3], # shape (2,3,4)
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
k=1
涉及一个翻转,然后是一个转置
In [105]: np.rot90(m,k=1, axes=(0,1))
Out[105]:
array([[[ 8, 9, 10, 11], # shape (3,2,4)
[20, 21, 22, 23]],
[[ 4, 5, 6, 7],
[16, 17, 18, 19]],
[[ 0, 1, 2, 3],
[12, 13, 14, 15]]])
k=2
更简单 - 只是在两个轴上翻转。这很容易形象化。最后一个维度不变(跨行),但平面和行颠倒了:
In [106]: np.rot90(m,k=2, axes=(0,1))
Out[106]:
array([[[20, 21, 22, 23],
[16, 17, 18, 19],
[12, 13, 14, 15]],
[[ 8, 9, 10, 11],
[ 4, 5, 6, 7],
[ 0, 1, 2, 3]]])
k=3
先翻转,然后转置
In [107]: np.rot90(m,k=3, axes=(0,1))
Out[107]:
array([[[12, 13, 14, 15], # again (3,2,4)
[ 0, 1, 2, 3]],
[[16, 17, 18, 19],
[ 4, 5, 6, 7]],
[[20, 21, 22, 23],
[ 8, 9, 10, 11]]])
看步伐:
In [111]: m.strides
Out[111]: (96, 32, 8)
In [112]: np.rot90(m,k=2, axes=(0,1)).strides
Out[112]: (-96, -32, 8) # the double flip
转置切换顺序,而翻转再次更改符号:
In [113]: np.rot90(m,k=1, axes=(0,1)).strides
Out[113]: (-32, 96, 8)
In [114]: np.rot90(m,k=3, axes=(0,1)).strides
Out[114]: (32, -96, 8)
因为它只是使用
flip
和
transpose
结果是
view
.
In [120]: m = np.arange(12).reshape(1,3,4)
In [121]: m
Out[121]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]])
In [122]: np.rot90(m,k=2, axes=(1,2))
Out[122]:
array([[[11, 10, 9, 8],
[ 7, 6, 5, 4],
[ 3, 2, 1, 0]]])
In [123]: np.rot90(m,k=1, axes=(1,2)) # visualize a counterclockwise rotation
Out[123]:
array([[[ 3, 7, 11],
[ 2, 6, 10],
[ 1, 5, 9],
[ 0, 4, 8]]])
In [124]: np.rot90(m,k=3, axes=(1,2)) # clockwise
Out[124]:
array([[[ 8, 4, 0],
[ 9, 5, 1],
[10, 6, 2],
[11, 7, 3]]])
k=3
也可以通过 1 和 2 连续逆时针旋转来可视化。
关于python - 了解 Numpy rot90 轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63972190/
我有一个小网站,我想在其中混淆一些文本,以保护不小心不及时阅读它的用户。 很像 imdb 上的关键词,你必须滚动才能显示它们。 我认为如果文本被标记,这将是一种很好的交互式方式来显示文本。 例子: H
目前,我正在编写一个程序,该程序使用 Java 对给定字符串执行 ROT-1 直到并包括 ROT-25。在我的研究之初,我发现this代码: public class Rot13 { public s
******************************************************************************* ROTS v1.05 Rem
我知道如何使用 *****.GetActiveObject(ProgId),但问题是我使用此代码行的几个应用程序没有添加到 ROT,即使它们已经打开,我得到HRESULT 错误。但是,如果我单击另一个
C++ 中字母的旋转 13 次换位未按我预期的方式工作。所有的字母首先都是大写的,所以只有 ASCII 数字 65-90 是相关的。如果字母超过 77,我会减去以回绕到“A”。 for (int j
我有这个方法可以测试我是否成功获得ROT: void func() { IRunningObjectTable *rot; qDebug() future = QtConcurren
基本上我必须使用 rot-13 将输入的字符数组转换为结果数组。所以,这就是我想做的事情:使用 for 循环,然后在 for 循环内使用条件来确定是否添加或减去 13 个位置。但我遇到的问题是编写 f
我知道有很多方法可以编写 ROT(n) 函数。但我不想有一些带有字符的表。 所以,我尝试编写一个带有解码器的简单 ROT(n),作为练习项目。编码功能工作正常。但解码器不断将“a”更改为“z”。 有人
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我需要获取正在运行的对象的特定实例(来自 C#)。可能有此应用程序的多个实例正在运行。不幸的是,此应用程序始终以完全相同的名称(例如,“!{DED89DB0-45B6-11CE-B307-080036
我已经对其进行了很多更改。而且,情况只会变得更糟。我不明白我做错了什么。从A-M,加13。从M-Z,减13。以前,至少我收到回信。现在,它们是符号。 import javax.swing.JOptio
我尝试实现 Rot13 并使其尽可能小,这是我目前的结果: if ( (c >= 'A') && (c = 'a') && (c = 'A') && (c = 'a') && (c = 'A'
我的代码多年来一直用于 PDF、HTML 文档和 XBRL 文档。从 IE 中的 BHO 或 Reader 中的 Adobe 插件调用代码。它在 ROT 中注册一个名字对象,并创建一个信号事件。
我想要一个函数,当传递一个只包含字母的字符串时,将字符串中的每个字母通过字母表旋转 X 个字符,其中 X 是函数的参数。著名的例子是当 X=13 时,称为 ROT-13 函数 <- ROTx(str,
我正在使用rot-js绘制带有六边形的网格,并希望将三 Angular 形和其他形状添加到 canvas 。我尝试过对 display.getContainer() 采取行动但这不起作用。需要做什么才
HZROT.cpp: #include "HZROT.h" std::string ROTEncode(std::string instring, int rot) { std::string
作为标准 Java 库之一的一部分,是否已经有 rot13() 和 unrot13() 实现?还是我必须自己编写并“重新发明轮子”? 它可能看起来像这样: int rot13 ( int c ) {
我正在尝试使用 R 对我的数据进行 PCA 分析,我发现 this nice guide , 使用 prcomp和 ggbiplot .我的数据是两种样本类型,每种类型具有三个生物学重复(即 6 行)
我有两个用 C++ 和 ATL 编写的 COM 对象。有一个图书馆,我知道他们的 IID 和 CLID。 我找不到在两个简单 COM 对象之间进行这种简单通信的示例。如何创建 IMoniker 以及如
我将网站上的所有电子邮件地址编码为 ROT-13,然后使用 Javascript 对地址进行解码(以避免垃圾邮件)。然而,在 IE 7 或 8 中,解码完全不起作用。在 Chrome、Safari、F
我是一名优秀的程序员,十分优秀!