J'essaie de créer un tableau numérique de coordonnées. Jusqu'à présent, j'ai juste utilisé x_coords, y_coords = numpy.indices((shape))
. Maintenant, cependant, je veux combiner x_coords
et y_coords
dans un tableau, tel que x_coords = thisArray[:,:,0]
et y_coords = thisArray[:,:,1]
Dans ce cas, thisArray est un tableau à deux dimensions. Existe-t-il un moyen simple ou pythonique de le faire?Manière pythonienne de créer un tableau numérique de coordonnées
Je pensais à l'origine à l'aide numpy.outer
, mais cela ne me donne pas tout à fait ce dont j'ai besoin. Une idée possible consiste simplement à utiliser la concaténation du tableau d'indices le long de l'axe (2ème?), Mais cela ne semble pas être une solution très élégante. (c'est peut-être le plus propre ici).
Merci!
Hm, qui semble fonctionner - que voulez-vous dire par la condition qu'il soit contigu? (Parlez-vous de son emplacement en mémoire?) – James
Lorsque vous faites rouler l'axe, la disposition de la mémoire des données n'est pas modifiée, seules les foulées du tableau. En mémoire, toutes les coordonnées x seront ensemble au début de la section mémoire, suivies de toutes les coordonnées y. Si vous avez créé votre tableau directement avec la forme que vous recherchez, les coordonnées x et y seraient alternées en mémoire. Pour certaines choses de fantaisie, la disposition de la mémoire réelle peut ralentir certains calculs, ou nécessiter une copie de la matrice, qui est lente. Par exemple, vous ne pouvez pas envoyer un tableau non contigu à 'np.frombuffer'. Mais pour la plupart des applications, ce n'est pas un problème du tout. – Jaime
Hm ok, merci. Une autre question alors. Supposons que je voulais aplatir le 2ème et le 3ème axe. (Parce que je ne m'inquiète pas vraiment de l'ordre dans lequel ils sont. Je veux juste juste un tableau de vecteurs). Comment pourrais-je faire ça? – James