约束Numpy数组中的行和列

时间:2016-09-19 21:38:48

标签: python arrays numpy for-loop

下面是理想情况下找到所有输入数组的最小行数和最大列数的代码,然后将所有输入的数组约束到这些维度(如果需要,填入零)

我意识到最后两个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]])

0 个答案:

没有答案