Dans Numpy, je peux concaténer deux tableaux bout à bout avec np.append
o np.concatenate
:
>>> X = np.array([[1,2,3]])
>>> Y = np.array([[-1,-2,-3],[4,5,6]])
>>> Z = np.append(X, Y, axis=0)
>>> Z
array([[ 1, 2, 3],
[-1, -2, -3],
[ 4, 5, 6]])
Mais ces derniers font des copies de leurs tableaux d'entrée :
>>> Z[0,:] = 0
>>> Z
array([[ 0, 0, 0],
[-1, -2, -3],
[ 4, 5, 6]])
>>> X
array([[1, 2, 3]])
Existe-t-il un moyen de concaténer deux tableaux en un seul ? vue c'est-à-dire sans copie ? Cela nécessiterait-il un np.ndarray
sous-classe ?
0 votes
Pourquoi voulez-vous avoir une vue plutôt qu'une copie ?
3 votes
@WinstonEwert : J'ai une longue liste de tableaux sur lesquels je veux effectuer une normalisation unique et globale.
0 votes
La compréhension de la liste sera également rapide.
0 votes
Cela ne répond pas à la question de savoir ce qu'il y a de mal à copier tous ces tableaux. En fait, êtes-vous préoccupé par le coût de la copie ou voulez-vous modifier les tableaux d'origine ?
2 votes
@WinstonEwert : le coût de la copie est le problème ; sinon, je pourrais simplement
concatenate
et remplacer les tableaux originaux par des vues dans la concaténation. Il semble que c'est ce que je vais devoir faire.1 votes
Il y a peut-être une meilleure façon de procéder, mais sans une meilleure vue d'ensemble de ce que vous faites, je ne peux pas me prononcer. En l'état, il peut être plus rapide de normaliser les tableaux individuellement plutôt que de les concaténer/séparer.
0 votes
@WinstonEwert : c'est impossible. Je pense que je vais adapter mes routines d'entrée pour tout allouer en une seule fois, puis diviser mon énorme tableau en une liste de vues par la suite. Cela semble être l'option la plus simple.