执行此操作的示例:
数组:
In [19]: A=np.arange(30).reshape(10,3)
一个函数:
In [20]: def foo(Asub, x):
return Asub+x
通过函数传递 2 个部分,重新加入它们(使用 vstack):
In [21]: B=np.vstack([foo(A[:5,:],3),foo(A[5:,:],4)])
In [22]: B
Out[22]:
array([[ 3, 4, 5],
[ 6, 7, 8],
...
[28, 29, 30],
[31, 32, 33]])
并在一次调用中写入 csv:
In [23]: np.savetxt('test.csv',B,fmt='%10d')
In [24]: cat test.csv
3 4 5
6 7 8
9 10 11
12 13 14
15 16 17
19 20 21
22 23 24
25 26 27
28 29 30
31 32 33
这是对数组索引(切片)、连接和 csv 写入的直接使用。
savetxt 也可以用打开的文件调用(文档说file handle),所以我可以分两步使用foo 和savetxt:
with open('text.csv','bw') as f:
a1 = foo(A[:5,:],3)
np.savetxt(f,a1,fmt='%10d')
a2 = foo(A[5:,:],5)
np.savetxt(f,a2,fmt='%10d')
或者我可以在附加模式下第二次重新打开文件。
我对有关保存 3d 数组的问题给出了类似的答案 - 作为多个 2d 块:https://stackoverflow.com/a/33705223/901925
和Output list and numpy array into same file