Python 如何从从数组创建的字符串中获取文本输出以保持未排序?

Python 如何从从数组创建的字符串中获取文本输出以保持未排序?,python,arrays,string,numpy,text,Python,Arrays,String,Numpy,Text,Python/Numpy问题。物理本科最后一年。。。我有一小段代码,它根据一个公式创建一个数组(本质上是一个n×n矩阵)。我将数组重塑为一列值,从中创建一个字符串,格式化它以删除多余的括号等,然后将结果输出到保存在用户文档目录中的文本文件中,然后由另一个软件使用。问题在于“n”的某个值以上。输出仅给出前三个值和后三个值,中间有“…”。我认为Python会自动缩减最终结果以节省时间和资源,但我需要最终文本文件中的所有这些值,不管处理需要多长时间,我一辈子都找不到如何阻止它这样做。相关代码复制到下面

Python/Numpy问题。物理本科最后一年。。。我有一小段代码,它根据一个公式创建一个数组(本质上是一个n×n矩阵)。我将数组重塑为一列值,从中创建一个字符串,格式化它以删除多余的括号等,然后将结果输出到保存在用户文档目录中的文本文件中,然后由另一个软件使用。问题在于“n”的某个值以上。输出仅给出前三个值和后三个值,中间有“…”。我认为Python会自动缩减最终结果以节省时间和资源,但我需要最终文本文件中的所有这些值,不管处理需要多长时间,我一辈子都找不到如何阻止它这样做。相关代码复制到下面

import numpy as np; import os.path ; import os

'''
Create a single column matrix in text format from Gaussian Eqn.
'''

save_path = os.path.join(os.path.expandvars("%userprofile%"),"Documents")
name_of_file = 'outputfile' #<---- change this as required.
completeName = os.path.join(save_path, name_of_file+".txt") 

matsize = 32

def gaussf(x,y): #defining gaussian but can be any f(x,y)
pisig = 1/(np.sqrt(2*np.pi) * matsize) #first term
sumxy = (-(x**2 + y**2)) #sum of squares term
expden = (2 * (matsize/1.0)**2) # 2 sigma squared
expn = pisig * np.exp(sumxy/expden) # and put it all together
return expn

matrix = [[ gaussf(x,y) ]\
for x in range(-matsize/2, matsize/2)\
for y in range(-matsize/2, matsize/2)] 

zmatrix = np.reshape(matrix, (matsize*matsize, 1))column

string2 = (str(zmatrix).replace('[','').replace(']','').replace(' ', ''))

zbfile = open(completeName, "w")
zbfile.write(string2)
zbfile.close()

print completeName
num_lines = sum(1 for line in open(completeName)) 
print num_lines
将numpy作为np导入;导入os.path;导入操作系统
'''
从Gaussian Eqn创建文本格式的单列矩阵。
'''
save_path=os.path.join(os.path.expandvars(“%userprofile%”,“文档”)

name_of_file='outputfile'#如果只想写入内容,通常应该迭代数组/列表

zmatrix = np.reshape(matrix, (matsize*matsize, 1))


with open(completeName, "w") as zbfile: # with closes your files automatically
    for row in zmatrix:
        zbfile.writelines(map(str, row))
        zbfile.write("\n")
输出:

0.00970926751178
0.00985735189176
0.00999792646484
0.0101306077521
0.0102550302672
0.0103708481917
0.010477736974
0.010575394844
0.0106635442315
.........................
但是使用
numpy
我们只需要使用:

输出与上述格式相同

在矩阵上调用
str
将为您提供与尝试
print
时得到的格式类似的输出,因此这就是您正在将格式截断的输出写入文件的内容

考虑到您正在使用python2,使用
xrange
将比使用rane创建列表更有效,而且不建议使用多个导入以冒号分隔,您可以简单地:

将numpy导入为np、os.path、os


此外,变量和函数名应使用下划线
z_矩阵
zb_文件
complete_名称
等。

您不需要处理
numpy
数组的字符串表示形式。一种方法是使用
tofile

zmatrix.tofile('output.txt', sep='\n')

啊。。太慢了。你当然是对的。我认为
tofile
甚至比逐行迭代更好。我只是想展示如何迭代数组/列表并写入每一行,以及如何与一起使用。我不知道对“str”的限制;到目前为止,我的Python编码经验是在非常小的领域中进行的。午饭后我将把那件事弄清楚。非常感谢你们两位!非常感谢你的建议!它现在输出正确。
zmatrix.tofile('output.txt', sep='\n')