...
Is the attached what you mean
No. The net effect of that connection is that each of the pins is pulled up to something like 4.15 volts through a resistance value of 5K Ohms. (Off the top of my head, using the superposition principle and Thevenin's theorem.) You should not apply 4.15 Volts to I/O pins of the 3.3 Volt gyro device.
There are I2C level shifting devices available (Texas Instruments PCA9306, for example). I have also used discrete circuitry described in
NXP Application Note 10441 to interface with 3.3 Volt I2C EEPROMs.
The point is to isolate the 5 Volt Arduino I2C lines from the 3.3 Volt I2C device so that no voltage higher than 3.3 Volts is ever applied to the logic pins of the 3.3 Volt device
The whole idea of I2C is that either the master or the slave can pull the lines low (any time they want), but they don't actively pull them high. High state is obtained from passive devices (pull=up resistors).
So: a master or slave can pull the line low or not pull it low. A given device can release the line (stop pulling it low) and then look to see if the other device is pulling it low. The whole protocol is built around that.
Bottom line: Don't pull up I2C lines on the 3.3 Volt device to a voltage higher than 3.3 Volts. (See Footnote.)
Regards,
Dave
Footnote:Post-bottom-line comment:
Maybe you can consider Option 1. Just pull the lines up to 3.3 Volts and modify the Wire library (or make a copy and modify the copy) so that internal Arduino pull-ups are not enabled.
This requires changing two lines of code in Arduino distribution
libraries/Wire/utility/twi.c so that the pullups are not enabled. The Arduino , operating at 5 Volts, will accept 3.3 Volt inputs as logic 1, and it will work without any additional hardware.