0
votes

Tableaux de rotation en python

bon après-midi,

Puisse-je obtenir de l'aide pour résoudre une rotation de la matrice en python? Je souhaite convertir un tableau 4 x 4 en une matrice 16 x 1. Ce que je pense, c'est que, je prendrais chaque rangée (4 x 1), faites-la pivoter (1 x 4) et appendez chaque rotation de la rangée l'une de l'autre jusqu'à ce que j'atteigne 16 x 1. Est-ce que quelqu'un saurait faire cela dans Python? Toute aide serait appréciée, merci.


5 commentaires

C'est une très mauvaise question si vous ne demandez qu'une réponse et que vous ne montrez pas ce que vous avez essayé ...


Vous avez les étapes d'algorithme. Montrer le problème de codage que vous avez.


Veuillez fournir un exemple de reproductible minimal , y compris les échantillons de données et code pour ce que vous avez essayé jusqu'à présent. Est-ce une liste de listes ou une matrice réelle, comme dans NUMPY?


Parler de "rotation" La matrice ne comprend pas comment vous dites alors que les tableaux "tournés" doivent être combinés, car tout ce que vous faites vraiment en train d'aplatir la matrice. Votre entrée est-elle une matrice numpy réelle ou une liste de listes?


Je m'excuse, c'est une mauvaise forme de ne pas inclure le code où j'ai tenté une solution. Hadrian a résolu-la (voir ci-dessous). Merci tout le monde.


3 Réponses :


1
votes

Je suis un peu incertain de ce que vous recherchez, mais:

example_arr = [
  [ 1, 2, 3 ],
  [ 4, 5, 6 ],
  [ 7, 8, 9 ]
]

# List Comprehension
new_arr = [ item for sublist in example_arr for item in sublist ]

# Long Form
new_arr = []
for sublist in example_arr:
  for item in sublist:
    new_arr.append(item)


0 commentaires

0
votes

Est-ce quelque chose que vous recherchez?

I / P: P>

my_arr = [
  [ 0, 1, 2, 3 ],
  [ 4, 5, 6, 7 ],
  [ 8, 9, 10, 11 ],
  [ 12, 13, 14, 15 ],
]

new_arr = []
for row in my_arr:
    new_arr.extend(row)

print(new_arr)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]


1 commentaires

Merci, j'ai trouvé que votre code a travaillé comme j'espérais.



0
votes
arr = [[0, 1, 2, 3],
    [4, 5, 6, 7],
    [8, 9, 10, 11],
    [12, 13, 14, 15]]
i = 0
new_arr = []
while i < len(arr):
    new_arr += arr[i]
    i += 1
arr = new_arr
del new_arr# no longer needed

2 commentaires

Merci, le code que vous avez fourni des œuvres si au lieu de "arr = new_arr", vous do "arr1 = new_arr". Je viens de faire sa propre variable. Cela a résolu mon problème.


Je suppose que vous pouvez utiliser une boucle à la place: pour segment dans la matrice: