在matlab/GNU Octave(我实际上正在使用)中,我使用此方法将2D数组的特定元素复制到另一个2D数组:
B(2:6, 2:6) = A
Run Code Online (Sandbox Code Playgroud)
哪里
size(A) = (5, 5)
Run Code Online (Sandbox Code Playgroud)
我的问题是,"如何在使用numpy的python中实现这一目标?" 目前,例如,我在python中使用以下嵌套循环:
>>> import numpy as np
>>> a = np.int32(np.random.rand(5,5)*10)
>>> b = np.zeros((6,6), dtype = np.int32)
>>> print a
[[6 7 5 1 3]
[3 9 7 2 0]
[9 3 7 6 7]
[9 8 2 0 8]
[8 7 7 9 9]]
>>> print b
[[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]]
>>> for i in range(1,6):
for j in range(1,6):
b[i][j] = a[i-1][j-1]
>>> print b
[[0, 0, 0, 0, 0, 0],
[0, 6, 7, 5, 1, 3],
[0, 3, 9, 7, 2, 0],
[0, 9, 3, 7, 6, 7],
[0, 9, 8, 2, 0, 8],
[0, 8, 7, 7, 9, 9]]
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
它与MATLAB几乎相同:
b[1:6, 1:6] = a
Run Code Online (Sandbox Code Playgroud)
唯一的事情是Python使用基于0的索引,因此第二个元素是1而不是2.
归档时间: |
|
查看次数: |
315 次 |
最近记录: |