下面是理想情况下找到所有输入数组的最小行数和最大列数的代码,然后将所有输入的数组约束到这些维度(如果需要,填入零)
我意识到最后两个for循环存在某种问题..
非常感谢任何帮助!
def resize(*args):
sizes_0=np.zeros((len(args)))
sizes_1=np.zeros((len(args)))
#STANDARDIZE SHAPE
for x in range(0, len(args)):
sizes_0[x]=args[x].shape[0]
sizes_1[x]=args[x].shape[1]
R=min(sizes_0)
C=max(sizes_1)
#smallest row, largest col
k=np.empty((R,C), dtype=np.ndarray)
#empty array, desired size
m=[k]*len(args)
#list of len(args) empty arrays of desired size
for x in args:
for y in range(0,len(args)):
x=x[0:R,:]
#select only rows within min # of rows
missing=C-x.shape[1]
add=np.zeros((x.shape[0], missing))
x=np.append(x, add, axis=1)
#add 'missing' number of columns (zeros) to each array
m[y]=x
#save the newly-shaped array to m
print m
样本输入
array([[3],
[4],
[5],
[6]])
array([[4, 5, 7],
[6, 7, 7]])
示例输入数组中的最小行数为2,样本输入数组中的最大列数为4(在这种情况下,两个参数恰好来自第二个数组)
所以,预期的输出是:
array([[3, 0, 0],
[4, 0, 0]])
array([[4, 5, 7],
[6, 7, 7]])