可视化3x3 numpy数组并将其另存为新的形状数组:400x600

时间:2019-02-08 16:36:28

标签: python numpy

我有类似的数组:

import numpy as np
np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

我想以一种不错的方式进行可视化,例如:

enter image description here

但分辨率:400 x 600。

所以最后我想有一个新的形状数组(400、600),如果使用以下图形绘制,则为:

import matplotlib.pyplot as plt
plt.imshow(my_new_array)

将显示如上的图像。

有可能吗? 有什么包装对我有帮助吗?

[编辑:] 在@Mad Physicist评论之后,我研究了乳胶,下面的代码可以完成这项工作:

\documentclass{article}
\usepackage{amsmath}
\begin{document}    
\[    
  \begin{bmatrix}
    1 & 2 & 3 \\
    4 & 5 & 6 \\
    7 & 8 & 9

  \end{bmatrix}
\]

\end{document}

matplotlib可以选择在轴和标题上使用文本,但是我不知道如何在绘图正文中使用它。也许是空的情节并在中间使用标题?

[edit2]: 第二个答案是最接近我需要的答案: Converting latex code to Images (or other displayble format) with Python 但是,正如我在下面的评论中所述,我在使用matplotlib和Latex的不同方法的kaggle上遇到错误:

FileNotFoundError: [Errno 2] No such file or directory: 'latex': 'latex'

2 个答案:

答案 0 :(得分:1)

Matplotlib可以render text with LaTeX,因此您可以利用它来进行这种可视化:

import numpy as np
import matplotlib.pyplot as plt

def show_mat(a, font_size, resolution=None, dpi=None):
    resolution = resolution or (600, 400)
    dpi = dpi or 100
    res_x, res_y = resolution
    inc_x = res_x / dpi
    inc_y = res_y / dpi
    rows, cols = a.shape
    fig = plt.figure(figsize=(inc_x, inc_y), dpi=dpi)
    ax = fig.add_subplot(111)
    ax.set_axis_off()
    a_str = r' \\ '.join(' & \quad & '.join(map(str, row)) for row in a)
    alig = 'c' * (2 * cols - 1)
    tex = r"$\left[\begin{{array}}{{{}}}{}\end{{array}}\right]$".format(alig, a_str)
    ax.text(0.5, 0.5, tex, size=font_size,
            horizontalalignment='center', verticalalignment='center',
            transform=ax.transAxes)

show_mat(np.arange(1, 10).reshape(3, 3), font_size=50)

输出:

Matrix

答案 1 :(得分:0)

您正在使用的Kaggle内核似乎无法访问LaTex解释器。

如果您只想为演示文稿创建一些图像,则可以签出Latex 2 png。在这里您必须输入

\begin{bmatrix}
    1 & 2 & 3 \\
    4 & 5 & 6 \\
    7 & 8 & 9

  \end{bmatrix}

这将导致以下图像:

Image created with latex2png.com