我有一个2 x 2大小的数组,我想将大小更改为3 x 4.
A = [[1 2 ],[2 3]]
A_new = [[1 2 0 0],[2 3 0 0],[0 0 0 0]]
Run Code Online (Sandbox Code Playgroud)
我尝试了3个形状,但它没有,附加只能附加行,而不是列.我不想遍历每一行来添加列.
有没有量化的方式来做到这一点像在MATLAB:A(:,3:4) = 0;和A(3,:) = 0;这个转换的A2×2到3×4.我在想有没有在Python类似的方式?
在Python中,如果输入是一个numpy数组,你可以使用np.lib.pad它来填充它周围的零 -
import numpy as np
A = np.array([[1, 2 ],[2, 3]]) # Input
A_new = np.lib.pad(A, ((0,1),(0,2)), 'constant', constant_values=(0)) # Output
Run Code Online (Sandbox Code Playgroud)
样品运行 -
In [7]: A # Input: A numpy array
Out[7]:
array([[1, 2],
[2, 3]])
In [8]: np.lib.pad(A, ((0,1),(0,2)), 'constant', constant_values=(0))
Out[8]:
array([[1, 2, 0, 0],
[2, 3, 0, 0],
[0, 0, 0, 0]]) # Zero padded numpy array
Run Code Online (Sandbox Code Playgroud)
如果你不想计算要填充多少个零的数学,你可以让代码在给定输出数组大小的情况下为你做 -
In [29]: A
Out[29]:
array([[1, 2],
[2, 3]])
In [30]: new_shape = (3,4)
In [31]: shape_diff = np.array(new_shape) - np.array(A.shape)
In [32]: np.lib.pad(A, ((0,shape_diff[0]),(0,shape_diff[1])),
'constant', constant_values=(0))
Out[32]:
array([[1, 2, 0, 0],
[2, 3, 0, 0],
[0, 0, 0, 0]])
Run Code Online (Sandbox Code Playgroud)
或者,您可以从零初始化输出数组开始,然后将这些输入元素放回A-
In [38]: A
Out[38]:
array([[1, 2],
[2, 3]])
In [39]: A_new = np.zeros(new_shape,dtype = A.dtype)
In [40]: A_new[0:A.shape[0],0:A.shape[1]] = A
In [41]: A_new
Out[41]:
array([[1, 2, 0, 0],
[2, 3, 0, 0],
[0, 0, 0, 0]])
Run Code Online (Sandbox Code Playgroud)
在MATLAB中,您可以使用padarray-
A_new = padarray(A,[1 2],'post')
Run Code Online (Sandbox Code Playgroud)
样品运行 -
>> A
A =
1 2
2 3
>> A_new = padarray(A,[1 2],'post')
A_new =
1 2 0 0
2 3 0 0
0 0 0 0
Run Code Online (Sandbox Code Playgroud)
纯Python方式实现这一点:
row = 3
column = 4
A = [[1, 2],[2, 3]]
A_new = map(lambda x: x + ([0] * (column - len(x))), A + ([[0] * column] * (row - len(A))))
Run Code Online (Sandbox Code Playgroud)
那么A_new就是[[1, 2, 0, 0], [2, 3, 0, 0], [0, 0, 0, 0]]。
很高兴知道:
[x] * n将重复x n-次+可以使用运算符连接列表解释:
map(function, list)将迭代列表中的每个项目将其传递给函数并用返回值替换该项目A + ([[0] * column] * (row - len(A))):A正在使用剩余的“归零”列表进行扩展
[0]按column计数重复项目([0] * (column - len(x))):对于每个行项目 ( x) 添加一个列表,其中包含剩余的列数,使用| 归档时间: |
|
| 查看次数: |
14116 次 |
| 最近记录: |