当前位置: 首页 > 面试题库 >

独立滚动矩阵行

田骁
2023-03-14
问题内容

我有一个矩阵(准确地说是2d numpy ndarray):

A = np.array([[4, 0, 0],
              [1, 2, 3],
              [0, 0, 5]])

我想A根据另一个数组中的roll值独立滚动每一行:

r = np.array([2, 0, -1])

也就是说,我要这样做:

print np.array([np.roll(row, x) for row,x in zip(A, r)])

[[0 0 4]
 [1 2 3]
 [0 5 0]]

有办法有效地做到这一点吗?也许使用花哨的索引技巧?


问题答案:

确保您可以使用高级索引来做到这一点,这是否是最快的方法可能取决于您的数组大小(如果行很大,则可能不是):

rows, column_indices = np.ogrid[:A.shape[0], :A.shape[1]]

# Use always a negative shift, so that column_indices are valid.
# (could also use module operation)
r[r < 0] += A.shape[1]
column_indices = column_indices - r[:, np.newaxis]

result = A[rows, column_indices]


 类似资料:
  • 问题内容: 如表的W3规范中]所指定: 表中的行可以被分组到一个表头,表脚,和一个或多个表体部分,使用,和分别的元件。这种划分使用户代理能够独立于桌子的头和脚来支持桌子主体的滚动。 我创建了以下示例,但是它不起作用。 HTML: JS: CSS: 问题答案: 缺少的部分是:

  • 着色器语言中通过关键字mat2、mat3、mat4分别声明一个2x2矩阵、3x3矩阵、4x4矩阵,通过内置函数mat2()、mat3()、mat4()分别创建一个2x2矩阵、3x3矩阵、4x4矩阵。 关键字 数据类型 mat2 2x2矩阵,4个元素 mat3 3x3矩阵,9个元素 mat4 4x4矩阵,16个元素 声明变量 关键子mat4声明一个4x4矩阵 mat4 matrix4; 构造函数赋

  • 我在查看一些代码时发现了以下内容: 有什么区别呢?顺便说一句:我对矩阵很陌生

  • 主要内容:RAID技术,标准RAID级别RAID是指独立磁盘的冗余阵列。它是一种用于连接多个辅助存储设备以提高性能,数据冗余或两者兼备的技术。它能够承受一个或多个驱动器(磁盘)故障,具体取决于所使用的RAID级别。 它由一系列磁盘组成,其中连接多个磁盘以实现不同的目标。 RAID技术 RAID技术有个级别的RAID方案。 这些模式为:,,,。 这些级别包含以下特征: 它包含一组物理磁盘驱动器。 在此技术中,操作系统将这些单独的磁盘视为单

  • 我正在努力弄清楚如何使俯仰偏航和侧倾在它们之间独立。一旦我在z轴(俯仰)上旋转某个物体,第二次旋转(yaxis yaw)取决于第一次旋转的结果,第三次旋转(x轴,roll)取决于其他两次旋转的结果。所以,我没有独立的俯仰、偏航和横滚,而是把它们三者混合在一起,很难看。 我希望有可能将物体的角度存储在一个数组中[俯仰、偏航、滚动],然后在变换过程中对这些角度进行解码,以便偏航将物体放置在给定的位置,

  • 主要内容:引用矩阵中的元素,删除矩阵中的一行或一列,矩阵运算,以下是纠正/补充内容:矩阵是数字的二维数组。 在MATLAB中,可以通过在每行中输入元素来创建一个矩形,以逗号或空格分隔数字,并使用分号标记每一行的结尾。 例如,创建一个矩阵 - MATLAB将执行上述语句并返回以下结果 - 引用矩阵中的元素 要引用矩阵的第行和第列中的元素,可以这样书写 - 例如,要引用矩阵的第行和第列中的元素,如上一节所述,可以这样书写 - MATLAB执行上述语句并返回以下结果 - 要引用第列中的

  • matlib.empty()函数返回一个新的矩阵,而不初始化元素。 该函数接受以下参数。 其中: import numpy.matlib import numpy as np print np.matlib.empty((2,2)) # 填充为随机数据 输出如下: [[ 2.12199579e-314, 4.24399158e-314] [ 4.24399158e-314, 2.121

  • 本文向大家介绍SVG 矩阵,包括了SVG 矩阵的使用技巧和注意事项,需要的朋友参考一下 示例 将转换矩阵应用于多边形: 每个点(x,y)都将通过以下方式进行转换matrix(a, b, c, d, e, f): 结果等于