나 작은 예에 의해 그것을 설명하자Numpy : 모든 행이 왼쪽/오른쪽 컨텍스트로 스택되도록 행렬을 재 배열하는 가장 효율적인 방법은 무엇입니까?
>>> x = np.array([[1,2], [3,4], [5,6], [7,8]])
>>> x
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
내가 형태
다음array([[0, 0, 1, 2, 3, 4],
[1, 2, 3, 4, 5, 6],
[3, 4, 5, 6, 7, 8],
[5, 6, 7, 8, 0, 0]])
을 가진 새로운 배열을 갖고 싶어, 컨텍스트의 크기를 +/- 1을 가지고,하지만 난 변수를 그대로 유지하고 싶습니다.
내가 지금까지하고 있어요 원래의 배열에 0을 추가한다 :
>>> y = np.concatenate((np.zeros((1, 2)), x, np.zeros((1, 2))), axis=0)
>>> y
array([[ 0., 0.],
[ 1., 2.],
[ 3., 4.],
[ 5., 6.],
[ 7., 8.],
[ 0., 0.]])
그리고 새로운 크기의 읽기 행하여 새 배열에 값을 넣어 :
>>> z = np.empty((x.shape[0], x.shape[1]*3))
>>> for i in range(x.shape[0]): z[i] = y[i:i+3].flatten()
그 일의 종류, 그러나 나는 그것을 느리고, 못생긴 및 unpythonic 찾아 낸다. 이 재배치를 수행하는 더 좋은 방법을 생각해 볼 수 있습니까? 인플레 이스 틱 솔루션 : 추가 엄지 손가락은
대단히 고마워요! 빠른 지옥과 메모리 효율적인. 여기서 약간의 가독성을 감당할 수 있으므로 귀하의 대답을 고수 할 것입니다. – Pavel