我正在寻找一些内置的NumPy模块或一些向量化的方法来获得这样的n
矩阵。这里唯一的关键是给定行的最后一个元素作为下一行的第一个元素。你知道吗
n = 2
# array([[1, 2],
# [2, 3]])
n = 3
# array([[1, 2, 3],
# [3, 4, 5],
# [5, 6, 7]])
n = 4
# array([[1, 2, 3, 4],
# [4, 5, 6, 7],
# [7, 8, 9, 10],
# [10, 11, 12, 13]])
我尝试使用列表理解。同样可以用扩展for循环语法编写。你知道吗
import numpy as np
n = 4
arr = np.array([[(n-1)*j+i for i in range(1, n+1)] for j in range(n)])
# array([[ 1, 2, 3, 4],
# [ 4, 5, 6, 7],
# [ 7, 8, 9, 10],
# [10, 11, 12, 13]])
如果您想保持简单(并且有一定的可读性),应该这样做:
只需构建从1到n²的所有数字,将其重塑为所需的块形状,然后从每行中减去行号。你知道吗
这与Divakar的
ranged_mat_v2
相同,但我喜欢用中间数组形状显式表示。不是每个人都是NumPy广播规则的专家。你知道吗进近#1
我们可以利用基于^{} 的^{} 来获得滑动窗口。More info on use of ^{} based ^{} 。你知道吗
另外,它接受一个
step
参数,这非常适合这个问题。因此,实施将是——示例运行-
进近#2
另一个是^{} -
进近#3
我们还可以使用支持多核处理的^{} module ,从而在大型
n's
上获得更好的效率-利用切片技术,我们的存储效率更高-
计时-
还有np.from函数如下所示。docs here
它采用一个函数,该函数根据索引值计算数组。你知道吗
相关问题 更多 >
编程相关推荐