Я пытаюсь выполнить некоторые операции по изменению формы в 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
. Кажется, я не могу изменить окончательный 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
Я знаю тамЕсть лучшие способы выполнить этот вид операции.Я упрощаю более сложную ситуацию.
Кто-нибудь знает, как я могу добиться успеха во втором утверждении при сохранении общей структуры второго фрагмента?Любые предложения будут очень полезны!