File to read from.
import numpy as np
# Write to a file with a specified dtype
np.array([1, 2, 3], dtype=np.int32).tofile('data.bin')
# Read from the file with the same dtype
arr_from_file = np.fromfile(file='data.bin', dtype=np.int32)
print(arr_from_file) # Output: [1 2 3]
.tofile() method writes an array to a file in a binary or text format.
The dtype must be specified explicitly unless the file's data-type is np.float64.
Specifies the data-type of the array elements.
import numpy as np
# Write to a file with a specified dtype
np.array([1., 2., 3.]).tofile('data.bin')
# Read from the file with the same dtype
arr_from_file = np.fromfile('data.bin')
print(arr_from_file) # Output: [1. 2. 3.]
np.int8: 8-bit signed integer (range: -128 to 127).
np.int16: 16-bit signed integer (range: -32,768 to 32,767).
np.int32: 32-bit signed integer (range: -2,147,483,648 to 2,147,483,647).
np.int64: 64-bit signed integer (large integer range).
np.uint8: 8-bit unsigned integer (range: 0 to 255).
np.uint16: 16-bit unsigned integer (range: 0 to 65,535).
np.uint32: 32-bit unsigned integer (range: 0 to 4,294,967,295).
np.uint64: 64-bit unsigned integer (large positive integer range).
np.float16: Half precision floating-point (16-bit, for low-precision computations).
np.float32: Single precision floating-point (32-bit).
np.float64: Double precision floating-point (64-bit, the default float in NumPy).
np.float128: Extended precision floating-point (128-bit, availability depends on system).
np.complex64: Complex number represented by two 32-bit floats (for real and imaginary parts).
np.complex128: Complex number represented by two 64-bit floats (default complex dtype).
np.complex256: Complex number represented by two 128-bit floats (system-dependent).
np.bool_: Boolean type, can be either True or False (stored as 1-bit but takes up a full byte).
np.str_: Fixed-length Unicode string, specified by S + length (e.g., S10 for a 10-character string).
np.unicode_: Fixed-length Unicode string with support for multiple characters (uses U).
np.object_: Allows storing any Python object, including mixed types, strings, or other arrays. Useful for heterogeneous data but slower than native NumPy types.
np.datetime64: Stores dates and times with varying precisions (e.g., Y, M, D, h, m, s, ms, us, ns, ps, fs, as). Example: np.datetime64('2003-10-02')
np.timedelta64: Represents time durations with units (same units as datetime64).
Start position in the file.
import numpy as np
# Data to write
data = np.array([10, 20, 30, 40, 50], dtype=np.int32)
# Write the data to a binary file
with open('data_with_header.bin', 'wb') as f:
f.write(b'BETTER') # Write a header (6 bytes)
data.tofile(f) # Write the actual data
# Read the file, skipping the 6-byte header
arr = np.fromfile('data_with_header.bin', dtype=np.int32, offset=6)
print(arr)
# Output: [10 20 30 40 50]
The like parameter in np.fromfile() was introduced to make array creation more flexible, particularly for compatibility with libraries that extend NumPy, like Dask, CuPy, or other libraries that create arrays compatible with np.ndarray but optimized for different backends (e.g., parallel processing or GPU-based arrays).