169 votes

Convertir un tableau 1D en un tableau 2D dans numpy

Je veux convertir un tableau unidimensionnel en un tableau bidimensionnel en spécifiant le nombre de colonnes dans le tableau 2D. Quelque chose qui fonctionnerait comme ceci :

> import numpy as np
> A = np.array([1,2,3,4,5,6])
> B = vec2matrix(A,ncol=2)
> B
array([[1, 2],
       [3, 4],
       [5, 6]])

Est-ce que numpy a une fonction qui fonctionne comme ma fonction inventée "vec2matrix" ? (Je comprends que vous pouvez indexer un tableau 1D comme un tableau 2D, mais ce n'est pas une option dans le code que j'ai - je dois faire cette conversion).

3voto

Rahul Kadam Points 39

Il existe aussi un moyen simple, nous pouvons utiliser la fonction reshape d'une manière différente :

A_reshape = A.reshape(No_of_rows, No_of_columns)

0voto

Rafi Points 19

Vous pouvez utiliser flatten() du paquet numpy.

import numpy as np
a = np.array([[1, 2],
       [3, 4],
       [5, 6]])
a_flat = a.flatten()
print(f"original array: {a} \nflattened array = {a_flat}")

Sortie :

original array: [[1 2]
 [3 4]
 [5 6]] 
flattened array = [1 2 3 4 5 6]

0voto

ZDL-so Points 170
some_array.shape = (1,)+some_array.shape

ou en obtenir un nouveau

another_array = numpy.reshape(some_array, (1,)+some_array.shape)

Les dimensions seront de +1, ce qui équivaut à l'ajout d'une parenthèse sur la partie la plus extérieure.

-1voto

Ayush Kapri Points 25
import numpy as np
array = np.arange(8) 
print("Original array : \n", array)
array = np.arange(8).reshape(2, 4)
print("New array : \n", array)

-2voto

Ayush Kapri Points 25

Transformez un tableau 1D en tableau 2D sans utiliser Numpy.

l = [i for i in range(1,21)]
part = 3
new = []
start, end = 0, part

while end <= len(l):
    temp = []
    for i in range(start, end):
        temp.append(l[i])
    new.append(temp)
    start += part
    end += part
print("new values:  ", new)

# for uneven cases
temp = []
while start < len(l):
    temp.append(l[start])
    start += 1
    new.append(temp)
print("new values for uneven cases:   ", new)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X