Cyp*_*rUS 5 python arrays numpy
我如何使用numpy/python数组例程来执行此操作?
例如,如果我有数组[ [1,2,3,4,]],输出应该是
[[1,1,2,2,],
[1,1,2,2,],
[3,3,4,4,],
[3,3,4,4]]
Run Code Online (Sandbox Code Playgroud)
因此,输出是行和列维度的两倍的数组.原始数组中的每个元素重复三次.
到目前为止,我有这个
def operation(mat,step=2):
result = np.array(mat,copy=True)
result[::2,::2] = mat
return result
Run Code Online (Sandbox Code Playgroud)
这给了我阵列
[[ 98.+0.j 0.+0.j 40.+0.j 0.+0.j]
[ 0.+0.j 0.+0.j 0.+0.j 0.+0.j]
[ 29.+0.j 0.+0.j 54.+0.j 0.+0.j]
[ 0.+0.j 0.+0.j 0.+0.j 0.+0.j]]
Run Code Online (Sandbox Code Playgroud)
输入
[[98 40]
[29 54]]
Run Code Online (Sandbox Code Playgroud)
阵列将始终具有均匀的尺寸.
使用np.repeat():
In [9]: A = np.array([[1, 2, 3, 4]])
In [10]: np.repeat(np.repeat(A, 2).reshape(2, 4), 2, 0)
Out[10]:
array([[1, 1, 2, 2],
[1, 1, 2, 2],
[3, 3, 4, 4],
[3, 3, 4, 4]])
Run Code Online (Sandbox Code Playgroud)
解释:
首先,您可以重复 arrya 项目:
In [30]: np.repeat(A, 3)
Out[30]: array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4])
Run Code Online (Sandbox Code Playgroud)
那么您所需要的就是重塑结果(根据您的预期结果,这可能会有所不同):
In [32]: np.repeat(A, 3).reshape(2, 3*2)
array([[1, 1, 1, 2, 2, 2],
[3, 3, 3, 4, 4, 4]])
Run Code Online (Sandbox Code Playgroud)
现在您应该沿着第一个轴重复结果:
In [34]: np.repeat(np.repeat(A, 3).reshape(2, 3*2), 3, 0)
Out[34]:
array([[1, 1, 1, 2, 2, 2],
[1, 1, 1, 2, 2, 2],
[1, 1, 1, 2, 2, 2],
[3, 3, 3, 4, 4, 4],
[3, 3, 3, 4, 4, 4],
[3, 3, 3, 4, 4, 4]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |