首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 2.7:如何将两个长度不同的数组保存到文件中?

Python 2.7:如何将两个长度不同的数组保存到文件中?
EN

Stack Overflow用户
提问于 2017-09-29 11:30:33
回答 3查看 207关注 0票数 0

我尝试将两个数组(arr1,arr2)水平保存到一个文件中。问题是这两个数组的长度不同。所以我不能使用np.v_stack()来连接它们。我要保存的两个数组: arr1 (5,3):

代码语言:javascript
复制
array([[-15.220009 ,  10.6649946,  -0.8999929],
       [-15.000009 ,  11.3639946,  -1.5949929],
       [-14.036009 ,   9.9939946,  -0.3249929],
       [-12.958009 ,  10.9589946,   0.2050071],
       [-12.179009 ,  10.3039946,   0.5970071]])

arr2 (4,3):

代码语言:javascript
复制
array([[-15.809009 ,  10.0499946,  -1.4429929],
       [-15.804009 ,  10.9649946,  -0.1329929],
       [-13.677009 ,   9.3459946,  -1.1249929],
       [-13.420009 ,  11.4869946,   1.0390071]])

我期望的输出是:

代码语言:javascript
复制
-15.220009,  10.6649946,  -0.8999929, -15.809009,  10.0499946,  -1.4429929
-15.000009,  11.3639946,  -1.5949929, -15.804009,  10.9649946,  -0.1329929
-14.036009,   9.9939946,  -0.3249929, -13.677009,   9.3459946,  -1.1249929
-12.958009,  10.9589946,   0.2050071, -13.420009,  11.4869946,   1.0390071
-12.179009,  10.3039946,   0.5970071

我已经在谷歌上搜索过了,但找不到有用的解决方案。

EN

回答 3

Stack Overflow用户

发布于 2017-09-29 13:09:56

代码语言:javascript
复制
arr = [[-15.220009, 10.6649946, -0.8999929],
   [-15.000009, 11.3639946, -1.5949929],
   [-14.036009, 9.9939946, -0.3249929],
   [-12.958009, 10.9589946, 0.2050071],
   [-12.179009, 10.3039946, 0.5970071]]

arr2 = [[-15.809009, 10.0499946, -1.4429929],
   [-15.804009, 10.9649946, -0.1329929],
   [-13.677009,  9.3459946, -1.1249929],
   [-13.420009, 11.4869946, 1.0390071]]

for i in range(max(len(arr), len(arr2))):
    str1 = (", ".join(map(str, arr[i]))) if i < len(arr) else ""
    str2 = (", ".join(map(str, arr2[i]))) if i < len(arr2) else ""
    print str1 + ', ' + str2

这不会将其保存到文件,但您可以将打印内容替换为保存到文件。请注意,如果第一个数组比第二个数组短,则第二个数组的额外行将出现在第一个数组的下方。

编辑

单行解决方案

代码语言:javascript
复制
print "\n".join([", ".join(map(str, (arr[i] if i < len(arr) else []) + (arr2[i] if i < len(arr2) else []))) for i in range(max(len(arr), len(arr2)))])
票数 0
EN

Stack Overflow用户

发布于 2017-09-30 17:21:24

我已经通过几个步骤得到了预期的输出。首先,我使用np.hstack()来连接较大和较小的切片。然后打开一个文件,并使用np.savetxt()按顺序将arr3和arr1-1:写入文件。例如:

代码语言:javascript
复制
arr3=np.hstack((arr1[:-1], arr2))
with open('out.dat', 'w') as output:
    np.savetxt(output, arr3, fmt=','.join(['% 12.7f']*6))
    np.savetxt(output, arr1[-1:], fmt=','.join(['% 12.7f']*3))
票数 0
EN

Stack Overflow用户

发布于 2017-09-30 17:31:16

代码语言:javascript
复制
 x = np.concatenate((arr,arr2))
 np.save('fileName', x) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46481394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档