當 W 是 (k / m) 的平方根并且 k 和 m 是變數串列時,我想計算 W 的所有可能值
k = arange(1, 7, 0.1)
m = arange(200, 1200, 1)
def stiff(k, m):
w = math.sqrt(k / m)
return w
print(stiff(k, m))
我曾嘗試使用,W = math.sqrt(k / m)但這不起作用,因為串列的大小不同,所以我想我需要某種回圈或迭代方法來通過此計算來計算 k 和 m 的所有可能值,以計算 W 的每個可能值.
任何幫助將不勝感激謝謝
uj5u.com熱心網友回復:
您可以使用numpy.meshgrid然后創建兩個陣列的所有可能組合,然后計算W如下:
import numpy as np
k = np.arange(1, 7, 0.1)
m = np.arange(200, 1200, 1)
kk , mm = np.meshgrid(k,m)
km = np.c_[kk.ravel(), mm.ravel()]
res = np.sqrt(km[:,0]/km[:,1])
輸出:
>>> res
array([0.07071068, 0.07416198, 0.07745967, ..., 0.07475286, 0.07530865,
0.07586037])
>>> len(res) , len(k), len(m)
(60000, 60, 1000)
uj5u.com熱心網友回復:
您可以使用 numpy 廣播:
import numpy as np
k = np.arange(1, 7, 0.1)
m = np.arange(200, 1200, 1)
np.sqrt(k/m[:,None])
輸出(二維組合矩陣):
array([[0.07071068, 0.07416198, 0.07745967, ..., 0.18303005, 0.18439089,
0.18574176],
[0.07053456, 0.07397727, 0.07726674, ..., 0.18257419, 0.18393163,
0.18527914],
[0.07035975, 0.07379393, 0.07707525, ..., 0.18212171, 0.18347579,
0.18481996],
...,
[0.02890367, 0.03031442, 0.03166238, ..., 0.07481528, 0.07537154,
0.07592372],
[0.0288916 , 0.03030177, 0.03164916, ..., 0.07478405, 0.07534007,
0.07589202],
[0.02887955, 0.03028913, 0.03163596, ..., 0.07475286, 0.07530865,
0.07586037]])
作為一維陣列:
np.sqrt(k/m[:,None]).ravel()
```
output:
```
array([0.07071068, 0.07416198, 0.07745967, ..., 0.07475286, 0.07530865,
0.07586037])
```
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/354028.html
