Twój prawdziwym problemem jest to, że wypisanie 1D 8-elementowa tablica daje 8 rzędów 1 kolumny (lub, jeśli zmusi rzeczy, 1 rzędzie 8 kolumn), a nie 4 rzędy 2 kolumnach. Możesz więc określić tylko jeden format (lub, jeśli wymusisz, 1 lub 8 formatów).
Jeśli chcesz wstawić ten w kształcie 4x2 zamiast 1x8, trzeba przekształcić tablicę pierwszy:
numpy.savetxt('output.dat', my_array.reshape((4,2)), fmt='%f %i')
To daje:
0.432432 0
0.943721 1
0.473872 0
0.493273 0
The docs są nieco mylące , ponieważ poświęcają większość sformułowań na radzenie sobie z liczbami zespolonymi zamiast prostych znaków i int, ale podstawowe zasady są takie same. Użytkownik określa albo pojedynczy specyfikator, albo specyfikator dla każdej kolumny (przypadek pośredni określania części rzeczywistych i urojonych dla każdej kolumny jest nieistotny).
Jeśli chcesz napisać go w 1 rzędzie 8 kolumn, należy najpierw przekształcić go w coś z 1 rzędu 8 kolumn zamiast 8 rzędach.
A potem trzeba podać 8 formatów. Nie ma sposobu, aby powiedzieć numpy „Powtórz te dwa formaty cztery razy”, ale jest to dość łatwe do zrobienia bez pomocy NumPy za:
numpy.savetxt('output.dat', my_array.reshape((1,8)), fmt='%f %i ' * 4)
I to daje:
0.432432 0 0.943721 1 0.473872 0 0.493273 0
'savetxt' nie jest członkiem' array' typu. Czy chodziło Ci o 'numpy.savetxt'? – abarnert
Nawiasem mówiąc, naprawdę pomogłoby, gdybyś pokazał, jak ma wyglądać oczekiwany wynik, zamiast zgadywać. To nie przypadek, że co najmniej dwa różne inteligentnych ludzi nie czytać w twoich myślach (albo dwa różne inteligentne osoby plus jeden, który jest tylko tak mądry jak ja, nie jestem pewien Domyślałem prawo albo) ... – abarnert
@abarnert Dzięki za komentarze, Edytowałem post, aby rozwiązać oba te problemy. – rhombidodecahedron