1. 程式人生 > >【Python】PyCharm中matplotlib.pyplot.imshow()無法繪圖

【Python】PyCharm中matplotlib.pyplot.imshow()無法繪圖

問題描述

在利用Anaconda3 + PyCharm 2018 實現神經網路的實踐中,涉及到一個根據畫素陣列繪製圖像的實踐,如下所示(這裡只需要關心image_array即可,對源資料的預處理可忽略):

# coding=utf-8
# author: BebDong
# 10/23/18

import numpy
import matplotlib.pyplot as plt

# 開啟並讀取檔案
data_file = open("mnist_dataset/mnist_train_100.csv")
data_list = data_file.readlines()
data_file.
close() # image_array是一個28*28的畫素陣列 all_pixels = data_list[0].split(',') image_array = numpy.asfarray(all_pixels[1:]).reshape((28, 28)) plt.imshow(image_array, cmap='gray', interpolation='None') pylab.show()

當執行時,控制檯無報錯資訊,正常執行結束退出(exit code 0),在SciView出處無繪製出的指定影象。

解決

在網上找了一些資料,大部分解決方案是“呼叫show()

”,也沒有給出原因,但其實也不行。
經過一番查詢,發現需要引入另外一個叫做pylab的包即可。(我想原因得靠自己查閱官方文件了)

# coding=utf-8
# author: BebDong
# 10/23/18

import numpy
import matplotlib.pyplot as plt

# 直接使用plt.imshow無法顯示圖片,需要匯入pylab包
import pylab

# 開啟並讀取檔案
data_file = open("mnist_dataset/mnist_train_100.csv")
data_list = data_file.readlines()
data_file.
close() # 拆分繪製28*28圖形 all_pixels = data_list[0].split(',') image_array = numpy.asfarray(all_pixels[1:]).reshape((28, 28)) plt.imshow(image_array, cmap='gray', interpolation='None') pylab.show()

吐槽和思考

其實程式猿經常會遇到一些技術問題,最直接的方法就是上網查閱資料,看看有沒有其他人遇到過相同問題,如何解決,這比翻閱官方文件顯然效率高得多。

就個人感覺來說,目前國內的環境不容樂觀,有時能看到好幾篇一字不差的博文,竟然標註都是原創文章。這還算好,畢竟是原封不動的抄襲原文。更悲觀的是,有些博文為了讓其**“看起來”**不那麼像抄襲,改得牛頭馬面,毫無邏輯可言。試問,您真的懂了原文的意思了嗎?既然你都不懂,為何要加以“原創”的標籤來展示和分享給他人呢?

個人認為,原創不一定非要100%是自己的東西。你看了某個文章,學習了某個技術,有一些自己的感悟和想法,用自己的語言將它描述出來也可以稱之為原創

最後,希望看到未來國內類似知識部落格對知識多一些尊重。

PS:寫給剛開始學程式設計的讀者
國內的部落格或文章存在上述弊端,但仍然不乏一些精品原文,值得參考,並不全是糟粕,多一些時間尋找。另外,可以使用google、Stack Overflow等工具,這樣得出的結果會更加具有參考價值。