是否可以通过使用for循环函数来简化重复代码?
def reshape_matrix(value1, value2, value3):
renew_value1 = np.reshape(value1, (np.size(value1), 1), order='C')
renew_value2 = np.reshape(value2, (np.size(value2), 1), order='C')
renew_value3 = np.reshape(value3, (np.size(value3), 1), order='C')
return renew_value1, renew_value2, renew_value3
a, b, c = reshape_matrix(A[[1,2,3], [1,2,3], [1,2,3]], B[[1,2,3], [1,2,3], [1,2,3]], C[[1,2,3], [1,2,3], [1,2,3]])
答案 0 :(得分:3)
如果始终只有三个参数,则不值得进行优化。如果没有:
def reshape_matrix(*values):
return tuple(np.reshape(v, (np.size(v), 1), order='C') for v in values)
较短的地方并不总是意味着更好,尤其是不是更好的可理解性/可读性。
答案 1 :(得分:1)
一种简化重复代码的方法是使用您所说的for循环。 但是,如果最多只有3个值,则没有理由更改当前使用的功能。
如果使用3个以上的值,请使用类似的
def reshape_matrix(*values):
new_vals = ()
for value in values:
new_vals += (np.reshape(value, (np.size(value), 1),)
return new_vals
答案 2 :(得分:1)
如果您知道矩阵始终为3x3
,并且想要转换为9x1
数组,则可以将尺寸直接传递给reshape
import numpy as np
def reshape_matrix(*values):
return [np.reshape(item, (9,1)) for item in values]
x = np.array([[1,2,3], [1,2,3], [1,2,3]])
a, b, c = reshape_matrix(x,x,x)
print(a, b, c)
输出将为
[[1]
[2]
[3]
[1]
[2]
[3]
[1]
[2]
[3]] [[1]
[2]
[3]
[1]
[2]
[3]
[1]
[2]
[3]] [[1]
[2]
[3]
[1]
[2]
[3]
[1]
[2]
[3]]