我很陌生,所以很抱歉,但希望我有语法正确,以便您理解我的问题!
我有一个形状为 (2,2,2( 的 numpy 数组
array([[[ 1, 1],
[ 2, 2]],
[[ 3, 3],
[ 4, 4]]])
如何将其写入文件,以便它列出索引和数组值即
0 0 0 1
1 0 0 3
0 1 0 2
1 1 0 4
0 0 1 1
1 0 1 3
0 1 1 2
1 1 1 4
谢谢英。
您可以使用
numpy.ndenumerate
a = np.array([[[1, 1],
[2, 2]],
[[3, 3],
[4, 4]]])
for items in np.ndenumerate(a):
print(items)
输出
((0, 0, 0), 1)
((0, 0, 1), 1)
((0, 1, 0), 2)
((0, 1, 1), 2)
((1, 0, 0), 3)
((1, 0, 1), 3)
((1, 1, 0), 4)
((1, 1, 1), 4)
要删除括号,您可以解压缩所有内容
for indexes, value in np.ndenumerate(a):
x,y,z = indexes
print(x,y,z,value)
输出
0 0 0 1
0 0 1 1
0 1 0 2
0 1 1 2
1 0 0 3
1 0 1 3
1 1 0 4
1 1 1 4
处理文件写入
with open('file.txt', 'w') as f:
for indexes, value in np.ndenumerate(a):
x,y,z = indexes
f.write('{} {} {} {}n'.format(x,y,z,value))
不确定这是否是 NumPy 中执行此操作的最佳方法,但您可以使用 numpy.unravel_index
、numpy.dstack
和 numpy.savetxt
的组合来执行此操作:
>>> arr = np.array([[[ 1, 1],
[ 2, 2]],
[[ 3, 3],
[ 4, 4]]])
>>> a = np.dstack(np.unravel_index(np.arange(arr.size),
arr.shape) + (arr.ravel(),))
>>> np.savetxt('foo.txt', a[0,...], fmt='%d')
>>> !cat foo.txt
0 0 0 1
0 0 1 1
0 1 0 2
0 1 1 2
1 0 0 3
1 0 1 3
1 1 0 4
1 1 1 4