我正在寻找一种干净的方法来将numpy阵列迁移到乳胶bmatrix。它应该同时适用于二维阵列和水平和垂直一维阵列。
示例
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])
输出:
[[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}
尝试解决方案
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
此解决方案适用于垂直和二维阵列,但它将水平阵列输出为垂直阵列。
array_to_bmatrix(A[0])
输出:
\begin{bmatrix}
12.000 & \\
5.000 & \\
2.000 & \\
\end{bmatrix}
numpy数组的
__str__
方法已经为您完成了大部分格式化。让我们利用它这将返回:
当您这样做时:
您正在迭代
array
的第一个维度。当数组是1-D时,您将结束对值的迭代。在执行此迭代之前,您需要确保array
是真正的二维。一种方法是通过numpy.atleast_2d
传递参数:等等
尝试
array_to_latex (pip install)
。我写它就是为了这个原因。如有不足,请提供反馈。它有默认值,但也允许您自定义格式(指数,小数位数)和处理复数,并可以“弹出”结果到您的剪贴板(不需要复制文本转储到屏幕)。
github存储库中的一些示例。https://github.com/josephcslater/array_to_latex
相关问题 更多 >
编程相关推荐