【发布时间】:2018-01-12 00:26:50
【问题描述】:
我有一个 .cpp 代码,如下所示,其中我将 matrix_1 的一些值复制到 matrix_2。
(注意:最初 matrix_2 是 matrix_1 的副本。)
num_of_row_of_matrix_1 = 400
num_of_col_of_matrix_1 = 700
for (int Row = 0; Row < num_of_row_of_matrix_1; Row += 2)
{
for (int Col = 0; Col < num_of_col_of_matrix_1; Col += 2)
{
matrix_2[Row + 1][Col] = matrix_1[Row][Col + 1];
}
}
现在我在 python-2.7 中实现了相同的代码,如下所示,
for Row in range(len(matrix_1)/2):
Row *= 2
for Col in range(len(matrix_1[0])/2):
Col *= 2
matrix_2[Row + 1, Col] = matrix_1[Row, Col + 1]
python中的矩阵是这样的
array([[1, 2, 3, ..., 33, 37, 36],
[4, 5, 6, ..., 25, 16, 26],
[2, 4, 7, ..., 37, 32, 36],
...,
[ 35, 106, 36, ..., 151, 37, 141],
[114, 179, 119, ..., 2, 165, 133],
[ 37, 111, 34, ..., 144, 39, 139]], dtype=uint8)
在 python 中的转换比在 cpp 中慢大约 4 倍。
在 python 中是否有任何有效的方法来做同样的事情?
如果您需要更多信息以进行说明,请告诉我。
【问题讨论】:
-
这不是您在任何一种语言中索引的方式。贴出真实代码。
-
我很惊讶 Python 只慢了四倍。如果您期望 Python 与 C++ 一样快,那么您正在打一场失败的战斗。您唯一的选择是其他 Python 解释器或为 Python 使用 C++ 模块。
-
@tadman,我不希望比 c++ 更快,但我只是不希望处理时间有那么大的差异。
-
否则你可以使用
range()函数的步幅:range(0, num_of_row_of_matrix_1 - 1, 2)而不是乘以2。 -
没有 C/C++ 语言。
.cpp源文件强烈建议使用 C++,但显示的代码在这两种语言中都没有意义(逗号不会像您在这里所期望的那样)。请选择一种语言并删除另一种标记,然后修复代码,谢谢。
标签: python c++ c python-2.7