The thriller, starring James McAvoy as a man with 23 personalities, has earned $40.2 million (£32.5 million), beating studio executives' expectations. The film has also garnered positive reviews from moviegoers.

"This movie absolutely delivers in terms of his genre," Universal domestic distribution president Nick Carpou says. "What (director) Night does doesn't fit a formula except for his own."

Overseas the movie earned $5.8 million (£4.7 million) in its opening weekend.

MCAvoy plays a disturbed man who kidnaps women and holds them hostage in the movie.

Meanwhile, Vin Diesel's xXx: The Return of Xander Cage has come in at number two with $20 million (£16.2 million). The film's North American earnings have brought its global total to $70.5 million (£57 million).

Diesel made his debut as adrenaline junkie turned spy Xander Cage in the first xXx back in 2002, but he was absent for the second instalment, Stage of the Union. Before the new movie's premiere, Diesel teased Paramount bosses are already interested in bringing back the cast, including Samuel L. Jackson and newcomers Ruby Rose and Donnie Yen, to film another sequel.

"Well, it's funny," Vin told Variety. "I was in the middle of an interview and Brad Grey - who runs Paramount - calls me and says, 'Will everybody come back to work in May?' I'm like, 'Everyone's in interviews right now!'"

Hidden Figures, which was previously at number one for two weekends in a row, comes in at number three with $16.2 million (£13.1 million), while animated film Sing follows with $9 million (£7.3 million).

Emma Stone and Ryan Gosling's La La Land closes out the top five with $8.4 million (£6.8 million).