Python 约束Numpy数组中的行和列
下面的代码理想情况下会找到所有输入数组的最小行数和最大列数,然后将所有输入数组约束到这些维度(如果需要,填写零) 我意识到最后两个for循环存在某种问题 非常感谢您的帮助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[
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])。请将它们添加到问题中,因为它们在注释中不可读。哎呀,添加到问题中@迪瓦卡