Python 当生成的二维未知时,如何重塑numpy数组?

Python 当生成的二维未知时,如何重塑numpy数组?,python,arrays,numpy,reshape,Python,Arrays,Numpy,Reshape,我有一个numpy阵列,形状为2501,4。我想把它重塑成一个三维数组,也就是说,结果的形状应该是:x,y,4 在这种情况下,如何确定整数值x和y? 我知道如果只有一个值未知,我可以使用-1。例如: b = a.reshape(-1, 41, 4) b.shape # (61, 41, 4) 您可以使用 factors = numpy.where(x % numpy.arange(1, x // 2 + 1) == 0) # array([1, 41, 61]) 问题在于,可能有很多解决

我有一个numpy阵列,形状为2501,4。我想把它重塑成一个三维数组,也就是说,结果的形状应该是:x,y,4

在这种情况下,如何确定整数值x和y? 我知道如果只有一个值未知,我可以使用-1。例如:

b = a.reshape(-1, 41, 4)
b.shape  # (61, 41, 4)

您可以使用

factors = numpy.where(x % numpy.arange(1, x // 2 + 1) == 0)  # array([1, 41, 61])

问题在于,可能有很多解决方案,其中最微不足道的是:

x = 1,    y = 2501
x = 2501, y = 1
否则,您可以使用将数字平均分割的所有因子:

x = 41, y = 61
x = 61, y = 41
找到一个数的所有因子都有一些解决方案-它被称为素因子分解,例如:

因此,以下任何一种可能性都符合您的要求:

 1 & 16
 2 &  8
 4 &  4
 8 &  2
16 &  1

因此,您无法自动执行此操作,因为需要有人决定选择哪一个。

您可以使用任何系数2501。你如何决定选择哪一个呢?对于x=2501,我得到的因子=array[0,40,60],!它是如何工作的?。。。你不能自动化。。使我沮丧。我希望不久有人能证明这是错的。@Gathide我已经给你列出了可能的组合,你想要哪一个?若你们提前知道你们需要哪种组合,就像第一个找到的组合一样,那个么你们完全有可能实现自动化。但是你的问题没有提到任何条件,所以正确的答案是:你不能。你的答案是可以的。我只希望你关于自动化的建议被证明是错误的,即使是在将来。这是一次非常耐心的尝试,试图回答一个基于错误前提的问题。
>>> primes(16)
[2, 2, 2, 2]
 1 & 16
 2 &  8
 4 &  4
 8 &  2
16 &  1