【问题标题】:Save a numpy matrix保存一个 numpy 矩阵
【发布时间】:2014-09-09 16:01:10
【问题描述】:

我有一个 3D 数组,我想沿 X-Y 获得一个 2D 图像,每个点的 z 值最大值,并将其保存为 numpy 数组。

import numpy as num
matrix=num.load('3d')
nx,ny,nz=num.shape(matrix)
CXY=num.zeros([ny, nx])
    for i in range(ny):
        for j in range(nx):
            CXY[i,j]=num.max(matrix[j,i,:])

问题是保存得到的矩阵。我想用 numpy.save 保存它,但我总是得到一个空数组。有没有人建议正确保存获得的数组?

我刚刚使用了 num.save:

num.save('max', CXY[i,j])

【问题讨论】:

  • 首先,matrix.max(axis=2) 执行您在 for 循环中所做的事情。其次,您应该向我们展示您保存数据的尝试,以便我们告诉您为什么它不起作用。
  • 你看:你应该保存CXJ,而不是CXJ[i,j]

标签: python arrays numpy matrix


【解决方案1】:

我猜您正在寻找以人类可读格式保存的 numpy.savetxt,而不是另存为二进制格式的 numpy.save。

import numpy as np
matrix=np.random.random((10,10,42))
nx,ny,nz=np.shape(matrix)
CXY=np.zeros([ny, nx])
for i in range(ny):
    for j in range(nx):
        CXY[i,j]=np.max(matrix[j,i,:])

#Binary data
np.save('maximums.npy', CXY)

#Human readable data
np.savetxt('maximums.txt', CXY)

此代码首先将数组保存为二进制文件,然后保存为可以在常规文本编辑器中打开的文件。

【讨论】:

  • 值得一提的是,np.save 将内容存储为泡菜文件,如果没有其他指定,如果您从 Python 2 升级到 Python 3 (see docs),这可能会让您非常不高兴。
猜你喜欢
  • 2010-12-14
  • 2014-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 1970-01-01
  • 2011-02-20
相关资源
最近更新 更多