numpyarray_to_latex
About
Format numpy arrays as LaTeX arrays. This is a fork of array_to_latex by @josephcslater.
repository: https://github.com/benmaier/numpyarray_to_latex/
documentation: http://numpyarray-to-latex.readthedocs.io/
>>> import numpy as np
>>> from numpyarray_to_latex import to_ltx
>>> tex = to_ltx(np.random.randn(2,2))
>>> print(tex)
\left(
\begin{array}
2.0156 & -0.3230\\
0.0477 & 0.0184
\end{array}
\right)
Install
pip install numpyarray_to_latex
numpyarray_to_latex
was developed and tested for
Python 3.6
Python 3.7
Python 3.8
Python 3.9
Python 3.10
So far, the package's functionality was tested on Mac OS X and CentOS only.
Dependencies
numpyarray_to_latex
directly depends on the following packages which
will be installed by pip
during the installation process
numpy>=1.0
Documentation
The full documentation is available at numpyarray-to-latex.readthedocs.io.
Examples
Default Python
import numpy as np
from numpyarray_to_latex.jupyter import to_jup
from numpyarray_to_latex import to_ltx
tex = to_ltx(np.random.randn(2,2))
print(tex)
\left(
\begin{array}
2.0156 & -0.3230\\
0.0477 & 0.0184
\end{array}
\right)
print(to_ltx(np.random.randn(2,2),
latexarraytype='array',
is_row_vector=False,
mark_color='yellow',
mark_elements=[(1,1)],
brackets='(]',
separate_columns=[1,2],
separate_rows=[1,2],))
\left(
\begin{array}{c|c}
0.3498 & 0.4393\\
\hline
-0.8521 & \colorbox{yellow}{$-0.6412$}
\end{array}
\right]
In Jupyter Notebooks
import numpy as np
from numpyarray_to_latex.jupyter import to_jup
to_jup(np.random.randn(10,10),
mark_elements=[(1,1),(2,3),(7,0)],
separate_columns=[1,2], # columns & rows that don't exist will be ignored
separate_rows=[1,2],
)

to_jup(np.random.randn(2),
mark_elements=[1,],
separate_columns=[1,2],
separate_rows=[1,2],
)

to_jup(np.random.randn(2),
is_row_vector=False,
mark_elements=[1,],
separate_columns=[1,2],
separate_rows=[1,2,3,4], # columns that don't exist will be ignored
mark_color='yellow',
brackets='(]',
)

to_jup(np.random.randn(2,2),
latexarraytype='Vmatrix',
is_row_vector=False,
separate_rows=[1],
)

to_jup(np.random.randn(2,2)+1j*np.random.randn(2,2),
mark_elements=[(0,1)],
)

to_jup(np.random.randn(2,2)+1j*np.random.randn(2,2),
mark_elements=[(0,1)],
fmt='{:4.2e}',
)

Changelog
Changes are logged in a separate file.
License
This project is licensed under the MIT License. Note that this excludes any images/pictures/figures shown here or in the documentation.
Contributing
If you want to contribute to this project, please make sure to read the code of conduct and the contributing guidelines. In case you're wondering about what to contribute, we're always collecting ideas of what we want to implement next in the outlook notes.
Dev notes
Fork this repository, clone it, and install it in dev mode.
git clone git@github.com:YOURUSERNAME/numpyarray_to_latex.git
make
If you want to upload to PyPI, first convert the new README.md
to
README.rst
make readme
It will give you warnings about bad .rst
-syntax. Fix those errors in
README.rst
. Then wrap the whole thing
make pypi
It will probably give you more warnings about .rst
-syntax. Fix those
until the warnings disappear. Then do
make upload
Pure Python
import numpy as np
from numpyarray_to_latex.jupyter import to_jup
from numpyarray_to_latex import to_ltx
tex = to_ltx(np.random.randn(2,2))
print(tex)
left( begin{array} 2.0156 & -0.3230\ 0.0477 & 0.0184 end{array} right)
print(to_ltx(np.random.randn(2,2),
latexarraytype='array',
is_row_vector=False,
mark_color='yellow',
mark_elements=[(1,1)],
brackets='(]',
separate_columns=[1,2],
separate_rows=[1,2],))
left( begin{array}{c|c} 0.3498 & 0.4393\ hline -0.8521 & colorbox{yellow}{$-0.6412$} end{array} right]
Jupyter Notebooks
import numpy as np
from numpyarray_to_latex.jupyter import to_jup
to_jup(np.random.randn(10,10),
mark_elements=[(1,1),(2,3),(7,0)],
separate_columns=[1,2],
separate_rows=[1,2],
)
to_jup(np.random.randn(2),
mark_elements=[1,],
separate_columns=[1,2],
separate_rows=[1,2],
)
to_jup(np.random.randn(2),
is_row_vector=False,
mark_elements=[1,],
separate_columns=[1,2],
separate_rows=[1,2],
mark_color='yellow',
brackets='(]',
)
to_jup(np.random.randn(2,2),
latexarraytype='Vmatrix',
is_row_vector=False,
separate_rows=[1],
)
to_jup(np.random.randn(2,2)+1j*np.random.randn(2,2),
mark_elements=[(0,1)],
)
to_jup(np.random.randn(2,2)+1j*np.random.randn(2,2),
mark_elements=[(0,1)],
fmt='{:4.2e}',
)
Main
Provides to_ltx to convert numpy arrays to LaTeX.
- numpyarray_to_latex.main.to_ltx(a, fmt='{:6.4f}', latexarraytype='array', imstring='i', is_row_vector=True, mathform=True, brackets='()', mark_elements=[], mark_color='pink', separate_columns=[], separate_rows=[])[source]
Return a LaTeX array given a numpy array.
- Parameters
a (numpy.ndarray) --
fmt (str, default = '{:6.2f}') -- python 3 formatter, optional- https://mkaz.tech/python-string-format.html
latexarraytype (str, default = 'array') --
Any of
"array" "pmatrix" "bmatrix" "vmatrix" "Vmatrix" "Bmatrix"
if "array", you can specifiy the brackets with the keyword
brackets
.imstring (str, default = 'i') -- Character to use to represent the imaginary unit. Usually
'i'
or'j'
is_row_vector (bool, default = True) -- If the array is 1D, should the output be a row (True) or column (False) vector?
mathform (bool, default = True) -- whether to convert strings like
1e+05
to1\times10^{5}
.brackets (iterable, default = '()') -- which brackets to use to wrap the matrix (must be two elements long). Use
brackets = None
if you don't want any brackets around the array.mark_elements (list, default = []) -- list of tuples containing element indices that should be marked with a colorbox.
mark_color (str, default = 'pink') -- The color with which to mark matrix elements.
separate_columns (list, default = []) -- list of column indices before which a vertical line should be drawn
separate_rows (list, default = []) -- list of row indices before which a horizontal line should be drawn
- Returns
out -- Formatted LaTeX string
- Return type
Examples
>>> from numpyarray_to_latex import to_ltx >>> tex = to_ltx([[2.,2.],[2.,2.]]) >>> print(tex) \left( \begin{array}{} 2.00 & 2.00\\ 2.00 & 2.00 \end{array} \right)
Jupyter
Utils
Provide helper functions.