我试图在Numpy运行一些重塑操作,但似乎无法完成一些看起来非常简单的事情。
以下工作正常:
import numpy as np
X = np.random.rand(55, 100, 3)
b = None
for i in range(X.shape[1]):
r = X[:, i:i+1, :]
b = r if not np.any(b) else np.concatenate((b, r), axis=1)
assert np.all(X == b.reshape(X.shape[0], X.shape[1], X.shape[2])) # succeeds
然而,当我试图重塑
r
在将其添加到中的行之前
b
,我似乎无法重塑决赛
乙
变成
X
:
import numpy as np
X = np.random.rand(55, 100, 3)
b = None
for i in range(X.shape[1]):
r = X[:, i:i+1, :].reshape(1, X.shape[0] * X.shape[2])
b = r if not np.any(b) else np.concatenate((b, r), axis=1)
assert np.all(X == b.reshape(X.shape[0], X.shape[1], X.shape[2])) # fails
我知道有更好的方法来完成这种手术。我在简化一个更复杂的情况。
有人知道我如何在维护第二个片段的一般结构的同时使第二个断言成功吗?任何建议都会很有帮助的!