2015-06-06 287 views
2

我有一個尺寸爲236 x 97的矩陣。當我用Python打印矩陣時,它的輸出不完整,.......位於矩陣的中間。在python中生成全矩陣輸出

我試圖將矩陣寫入測試文件,但結果完全相同。 我無法發佈截圖,因爲我的聲望不夠,並且如果我選擇另一個標記選項,將無法正確顯示。 任何人都可以解決這個問題嗎?


def build(self): 
    self.keys = [k for k in self.wdict.keys() if len(self.wdict[k]) > 1] 
    self.keys.sort() 
    self.A = zeros([len(self.keys), self.dcount]) 
    for i, k in enumerate(self.keys): 
     for d in self.wdict[k]: 
      self.A[i,d] += 1 

def printA(self): 
    outprint = open('outputprint.txt','w') 
    print 'Here is the weighted matrix' 
    print self.A 
    outprint.write('%s' % self.A) 
    outprint.close() 
    print self.A.shape 

回答

1

假設你的矩陣是一個numpy的陣列可以使用matrix.tofile(<options>)寫陣列到一個文件如記錄here

#!/usr/bin/env python 
# coding: utf-8 

import numpy as np 

# create a matrix of random numbers and desired dimension 
a = np.random.rand(236, 97) 

# write matrix to file 
a.tofile('output.txt', sep = ' ') 
+0

它實際上是工作的,但是輸出的值與我打印的輸出不同在python shell中。我想念什麼? –

+0

@IrfanDary:你說的'不同'是什麼意思?實際上,'stdout'上的輸出被縮短了。如果我解決了您的問題,請您打勾我的答案? – albert

+0

我的意思是這個值與shell中的輸出不同。我從文本文件中取出一個值,然後在shell中搜索該值,但找不到相同的值。 –

1

的問題是,你是專門保存str表示與此行文件:

outprint.write('%s' % self.A)

其中明確它轉換成字符串(%s)---發電您看到的刪節版本。

有很多方法來寫整個矩陣輸出,一個簡單的辦法是使用numpy.savetxt,例如:

import numpy 
numpy.savetxt('outputprint.txt', self.A) 
+0

它是否與2.7版本兼容或我應該從numpy導入的東西? ,因爲它在我嘗試這個時會變成錯誤。它說「NameError:全球名'numpy'沒有定義」 –

+0

@IrfanDary你必須首先導入'numpy'模塊---我已經添加了相關的行到我的答案。所有模塊必須先導入才能使用。如果您有興趣,請查看[關於模塊的這個簡單教程](http://www.tutorialspoint.com/python/python_modules.htm) – DilithiumMatrix