Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 约束Numpy数组中的行和列_Python_Arrays_Numpy_For Loop - Fatal编程技术网

Python 约束Numpy数组中的行和列

Python 约束Numpy数组中的行和列,python,arrays,numpy,for-loop,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[

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

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

您能添加一个示例案例并解释预期结果吗?当然!样本输入将是:np.array([3]、[4]、[5]、[6])和np.array([4,5,7]、[6,7,7]);两个输入中最少的行数是2,最大的列数是3,因此预期的输出是:np.array([3,0,0],[4,0,0])和np.array([[4,5,7],[6,7,7])。请将它们添加到问题中,因为它们在注释中不可读。哎呀,添加到问题中@你能添加一个示例案例并解释预期结果吗?当然!样本输入将是:np.array([3]、[4]、[5]、[6])和np.array([4,5,7]、[6,7,7]);两个输入中最少的行数是2,最大的列数是3,因此预期的输出是:np.array([3,0,0],[4,0,0])和np.array([[4,5,7],[6,7,7])。请将它们添加到问题中,因为它们在注释中不可读。哎呀,添加到问题中@迪瓦卡