擅长:python、mysql、java
<p>我认为在处理问题时,您应该更多地依赖numpy功能。我自己不是一个numpy专家,所以肯定还有改进的空间:</p>
<pre><code>from scipy.stats import gmean
n = 2
z = 1
a = np.arange(n + 1).reshape(1, n + 1)
#constructing the base array before modification by random x values in position z
B = np.exp(1j * (np.pi / 3) * np.abs(a - a.T))
B[a, a] = 1 - 1j / np.sqrt(3)
#list to store all modified arrays
random_arrays = []
for _ in range(50):
#generate random x value
x=np.random.uniform(-0.8, 0.8)
#copy array and modify it
B_new = np.copy(B)
B_new[z, a] = np.exp(1j * (np.pi / 3) * np.abs(z - a + x))
B_new[a, z] = np.exp(1j * (np.pi / 3) * np.abs(a - z + x))
random_arrays.append(B_new)
#store all B arrays as a 3D array
B_stack = np.stack(random_arrays)
#calculate the geometric mean value along the axis that was the row in 2D arrays
geom_mean_for_rows = gmean(B_stack, axis = 2)
</code></pre>
<p>它使用来自<a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.gmean.html" rel="nofollow noreferrer">^{<cd1>}</a>模块的几何平均函数来进行此计算。你知道吗</p>