Si consideri il seguente esempio semplice:Come assegnare un array numpy 1D all'array numpy 2D?
X = numpy.zeros([10, 4]) # 2D array
x = numpy.arange(0,10) # 1D array
X[:,0] = x # WORKS
X[:,0:1] = x # returns ERROR:
# ValueError: could not broadcast input array from shape (10) into shape (10,1)
X[:,0:1] = (x.reshape(-1, 1)) # WORKS
Qualcuno può spiegare perché ha NumPy vettori di forma (N,) piuttosto che (N, 1)? Qual è il modo migliore per eseguire il cast dall'array 1D all'array 2D?
Perché ho bisogno di questo? Perché ho un codice che inserisce x
in un array 2D X
e la dimensione di x cambia di volta in volta, quindi ho X[:, idx1:idx2] = x
che funziona se x
è anche 2D ma non se x è 1D.
Potrebbe aggiungere qualche commento in più? Non mi è chiaro come sei arrivato dal codice originale e perché questo risolve il problema. – brandones