编辑 numpy 矩阵中的每个值
Editing every value in a numpy matrix
我有一个 numpy 矩阵,其中填充了来自 *.csv 文件的数据
csv = np.genfromtxt (file,skiprows=22)
matrix = np.matrix(csv)
这是一个 64x64 矩阵,看起来像
print matrix
[[...,...,....]
[...,...,.....]
.....
]]
现在我需要对每个值取对数 math.log10() 并将其保存到另一个 64x64 矩阵中。
我怎样才能做到这一点?我试过了
matrix_lg = np.matrix(csv)
for i in range (0,len(matrix)):
for j in range (0,len(matrix[0])):
matrix_lg[i,j]=math.log10(matrix[i,j])
但这只编辑了我初始矩阵的第一个数组(即第一行)。
这是我第一次使用 python,我开始感到困惑。
你可以这样做:
matrix_lg = numpy.log10(matrix)
它会为您完成。以这种矢量化方式执行它也比遍历 python 中的每个条目要快得多。它还将更优雅地处理域错误。
FWIW 但是,您发布的代码的问题是矩阵的 len()
与嵌套列表的工作方式并不完全相同。正如评论中所建议的,您可以只使用 matrix.shape
来获得适当的暗淡来迭代:
matrix_lg = np.matrix(csv)
for i in range(0,matrix_lg.shape[0]):
for j in range(0,matrix_lg.shape[1]):
matrix_lg[i,j]=math.log10(matrix_lg[i,j])
我有一个 numpy 矩阵,其中填充了来自 *.csv 文件的数据
csv = np.genfromtxt (file,skiprows=22)
matrix = np.matrix(csv)
这是一个 64x64 矩阵,看起来像
print matrix
[[...,...,....]
[...,...,.....]
.....
]]
现在我需要对每个值取对数 math.log10() 并将其保存到另一个 64x64 矩阵中。 我怎样才能做到这一点?我试过了
matrix_lg = np.matrix(csv)
for i in range (0,len(matrix)):
for j in range (0,len(matrix[0])):
matrix_lg[i,j]=math.log10(matrix[i,j])
但这只编辑了我初始矩阵的第一个数组(即第一行)。 这是我第一次使用 python,我开始感到困惑。
你可以这样做:
matrix_lg = numpy.log10(matrix)
它会为您完成。以这种矢量化方式执行它也比遍历 python 中的每个条目要快得多。它还将更优雅地处理域错误。
FWIW 但是,您发布的代码的问题是矩阵的 len()
与嵌套列表的工作方式并不完全相同。正如评论中所建议的,您可以只使用 matrix.shape
来获得适当的暗淡来迭代:
matrix_lg = np.matrix(csv)
for i in range(0,matrix_lg.shape[0]):
for j in range(0,matrix_lg.shape[1]):
matrix_lg[i,j]=math.log10(matrix_lg[i,j])