The*_*eer 6 python latex numpy
我正在寻找一种将numpy数组迁移到latex bmatrix的简洁方法.它应该适用于2d阵列和水平和垂直1d阵列.
例
A = array([[12, 5, 2],
[20, 4, 8],
[ 2, 4, 3],
[ 7, 1,10]])
print A #2d array
print A[0] #horizontal array
print A[:,0, None] #vertical array
array_to_bmatrix(A)
array_to_bmatrix(A[0])
array_to_bmatrix(A[:,0, None])
Run Code Online (Sandbox Code Playgroud)
日期:
[[12 5 2]
[20 4 8]
[ 2 4 3]
[ 7 1 10]]
[12 5 2]
[[12]
[20]
[ 2]
[ 7]]
\begin{bmatrix}
12.000 & 5.000 & 2.000 & \\
20.000 & 4.000 & 8.000 & \\
2.000 & 4.000 & 3.000 & \\
7.000 & 1.000 & 10.000 & \\
\end{bmatrix}
\begin{bmatrix}
12.000 & 5.000 & 2.000
\end{bmatrix}
\begin{bmatrix}
12.000 & \\
20.000 & \\
2.000 & \\
7.000 & \\
\end{bmatrix}
Run Code Online (Sandbox Code Playgroud)
尝试解决方案
def array_to_bmatrix(array):
begin = '\\begin{bmatrix} \n'
data = ''
for line in array:
if line.size == 1:
data = data + ' %.3f &'%line
data = data + r' \\'
data = data + '\n'
continue
for element in line:
data = data + ' %.3f &'%element
data = data + r' \\'
data = data + '\n'
end = '\end{bmatrix}'
print begin + data + end
Run Code Online (Sandbox Code Playgroud)
此解决方案适用于垂直和2d阵列,但它将水平阵列输出为垂直阵列.
array_to_bmatrix(A[0])
Run Code Online (Sandbox Code Playgroud)
日期:
\begin{bmatrix}
12.000 & \\
5.000 & \\
2.000 & \\
\end{bmatrix}
Run Code Online (Sandbox Code Playgroud)
Rol*_*ith 16
__str__
numpy数组的方法已经为您完成了大部分格式化.让我们利用它;
import numpy as np
def bmatrix(a):
"""Returns a LaTeX bmatrix
:a: numpy array
:returns: LaTeX bmatrix as a string
"""
if len(a.shape) > 2:
raise ValueError('bmatrix can at most display two dimensions')
lines = str(a).replace('[', '').replace(']', '').splitlines()
rv = [r'\begin{bmatrix}']
rv += [' ' + ' & '.join(l.split()) + r'\\' for l in lines]
rv += [r'\end{bmatrix}']
return '\n'.join(rv)
A = np.array([[12, 5, 2], [20, 4, 8], [ 2, 4, 3], [ 7, 1, 10]])
print bmatrix(A) + '\n'
B = np.array([[1.2], [3.7], [0.2]])
print bmatrix(B) + '\n'
C = np.array([1.2, 9.3, 0.6, -2.1])
print bmatrix(C) + '\n'
Run Code Online (Sandbox Code Playgroud)
返回:
\begin{bmatrix}
12 & 5 & 2\\
20 & 4 & 8\\
2 & 4 & 3\\
7 & 1 & 10\\
\end{bmatrix}
\begin{bmatrix}
1.2\\
3.7\\
0.2\\
\end{bmatrix}
\begin{bmatrix}
1.2 & 9.3 & 0.6 & -2.1\\
\end{bmatrix}
Run Code Online (Sandbox Code Playgroud)
尝试array_to_latex (pip install)
。我就是因为这个原因才写的。不足之处请提供您的反馈。
它具有默认值,但也允许您自定义格式(指数、小数位数)并处理复数,并且可以将结果直接“弹出”到剪贴板中(无需复制转储到屏幕上的文本)。
github 存储库中的一些示例。https://github.com/josephcslater/array_to_latex
归档时间: |
|
查看次数: |
5085 次 |
最近记录: |