【发布时间】:2021-06-03 19:39:13
【问题描述】:
我想知道是否有一种有效的方法可以在 python 中填充数组,而不使用numpy.pad()
我知道一种使用嵌套 for 循环的方法,但我想知道是否有更快的方法?
输入:
row padding on top- 2
column padding from left - 1
1 2 3
4 5 6
7 8 9
输出
0 0 0 0
0 0 0 0
0 1 2 3
0 4 5 6
0 7 8 9
我做了什么
y = [[1,2,3],[4,5,6],[7,8,9]]
topPadding = 2
leftPadding = 1
noOfRows = len(y)+topPadding
noOfCols = len(y)+leftPadding
x = [[0 for i in range(noOfCols)] for j in range(noOfRows)]
for i in range(topPadding,noOfRows):
for j in range(leftPadding,noOfCols):
x[i][j] = y[i-topPadding][j-leftPadding]
print()
print(x)
输出
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 1, 2, 3], [0, 4, 5, 6], [0, 7, 8, 9]]
【问题讨论】:
-
是 numpy.pad 太慢了吗?
-
我正在尝试构建一个在存储方面没有很多资源的平台上运行的算法,因此 NumPy 会很重,出于同样的原因我不想使用任何外部库,所以我正在尝试构建替代方案
-
这是有道理的。但是当没有什么可比的(即你已经尝试过的)时,要求一种“更快的方法”有点开放式
-
我试过了,创建一个全新的数组并一个一个地复制元素,时间复杂度是O(n^2),这是我能做到的最好的吗?
-
我建议您将该代码作为可运行示例包含在此问题中。