我有一個numpy數組,a
形狀(2501, 4)
。我想將它重新整形成一個3維數組,也就是說,結果形狀應該是:(x, y, 4)
。當結果2維度未知時,你如何重塑numpy數組?
在這種情況下,我如何確定整數值x
和y
? 我知道如果只有一個值是未知的,我可以使用-1。例如:
b = a.reshape(-1, 41, 4)
b.shape # (61, 41, 4)
我有一個numpy數組,a
形狀(2501, 4)
。我想將它重新整形成一個3維數組,也就是說,結果形狀應該是:(x, y, 4)
。當結果2維度未知時,你如何重塑numpy數組?
在這種情況下,我如何確定整數值x
和y
? 我知道如果只有一個值是未知的,我可以使用-1。例如:
b = a.reshape(-1, 41, 4)
b.shape # (61, 41, 4)
x
的所有因素
的問題是,有這個可能很多的解決方案,以最平凡的人是:
x = 1, y = 2501
x = 2501, y = 1
否則,您可以使用平均分配號碼的所有因素:
x = 41, y = 61
x = 61, y = 41
有查找號碼的所有因素的解決方案 - 這就是所謂的「因式分解」,例如this answer:
def primes(n):
"""Copied from https://stackoverflow.com/a/16996439/5393381 (author: Daniel Fischer)"""
primfac = []
d = 2
while d*d <= n:
while (n % d) == 0:
primfac.append(d)
n //= d
d += 1
if n > 1:
primfac.append(n)
return primfac
>>> primes(2501)
[41, 61]
需要注意的是結果的所有組合都是可能的解決方案。例如,對於16
有以下解決方案:
>>> primes(16)
[2, 2, 2, 2]
因此,任何以下可能會符合您的要求:
1 & 16
2 & 8
4 & 4
8 & 2
16 & 1
所以你不能自動完成這個因爲有人「需要決定」,其中之一選擇。
可以使用
factors = numpy.where(x % numpy.arange(1, x // 2 + 1) == 0) # array([1, 41, 61])
對於'x = 2501',我得到了'factors =(array([0,40,60]),)'!它是如何工作的? – Gathide
您可以使用任何因子「2501」。你將如何決定選擇哪一個? –