2016-11-16 3 views
0

을 제공합니다난과 같이, NumPy와 배열 목록에서 여러 NumPy와 배열을 만드는거야 잘못된 모양

seq_length = 1500 
seq_diff = 200 # difference between start of two sequences 
# x and y are 2D numpy arrays 
x_seqs = [x[i:i+seq_length,:] for i in range(0, seq_diff*(len(x) // seq_diff), seq_diff)] 
y_seqs = [y[i:i+seq_length,:] for i in range(0, seq_diff*(len(y) // seq_diff), seq_diff)] 
boundary1 = int(0.7 * len(x_seqs)) # 70% is training set 
boundary2 = int(0.85 * len(x_seqs)) # 15% validation, 15% test 
x_train = np.array(x_seqs[:boundary1]) 
y_train = np.array(y_seqs[:boundary1]) 
x_valid = np.array(x_seqs[boundary1:boundary2]) 
y_valid = np.array(y_seqs[boundary1:boundary2]) 
x_test = np.array(x_seqs[boundary2:]) 
y_test = np.array(y_seqs[boundary2:]) 

내가 N (모양의 6 개 배열을 끝내고 싶습니다, 1500, 300) 여기서 n은 교육, 검증 및 테스트 어레이에 대한 내 데이터의 70 %, 15 % 또는 15 %입니다.

여기가 잘못되었습니다. _train_valid 어레이는 양호하지만, _test 어레이는 1 차원 어레이 어레이입니다. 즉 :

  • x_train.shape(459, 1500, 300)
  • x_valid.shape입니다 (99, 1500, 300)
  • x_test.shape(99,)

입니다 그러나 x_test를 인쇄하는 것은 올바른 요소가 포함되어 있는지 확인합니다 - 그것은의 99 요소 긴 배열이다 즉 배열은 (1500, 300)입니다.

_train_valid 행렬이 아닌데 _test 행렬의 모양이 잘못된 이유는 무엇입니까?

답변

1

x_seqs의 항목은 길이가 다릅니다. 그들이 모두 같은 길이라면, np.array은 그들로부터 3 차원 배열을 만들 수 있습니다; 그것들이 다를 때 그것은 객체 배열을 만든다. dtypex_test입니다. [len(i) for i in x_test]을 확인하십시오.

내가 코드를했다 추가 :

x=np.zeros((2000,10)) 
y=x.copy() 
... 
print([len(i) for i in x_seqs]) 
print(x_train.shape) 
print(x_valid.shape) 
print(x_test.shape) 

을 얻은 :

1520:~/mypy$ python3 stack40643639.py 
[1500, 1500, 1500, 1400, 1200, 1000, 800, 600, 400, 200] 
(7,) 
(1, 600, 10) 
(2,)