我對這個冗長的標題表示歉意。我一直在爲一個項目工作了一段時間,而且我對代碼中的某個部分很感興趣。我盡我所能徹底。集成一個返回相同大小的數組而不是在Python中的元組的數組?
我有羣衆的numpy的陣列中,M,尺寸和形狀167197.
## Non-constant
M = data['m200'] # kg // Mass of dark matter haloes
R = [] # Km // Radius of sphere
for masses in M:
R.append(((3*masses)/(RHO_C*4*(3.14))**(1.0/3.0)))
我有屬於我的問題的部分k的獨立的值擬合函數。 k是我的代碼中定義的值。
def T(k): # Fitting Function // Assuming a lambdaCDM model
q = k/((OMEGA_M)*H**2)*((T_CMB)/27)**2
L = np.log(euler+1.84*q)
C = 14.4 + 325/(1+60.5*q**1.11)
return L/(L+C*q**2)
##############################################################################
def P(k): # Linear Power Spectrum
A = 0.75 # LambdaCDM Power Normalization
n = 0.95 # current constraints from WMAP+LSS
return A*k**n*T(k)**2
*對於實際問題*
我有一個傅立葉transfrom w ^(KR)
def W(R):# Fourier Transfrom of Top Hat function
return (3*(np.sin(k*R)-(k*R)*np.cos(k*R)))/(k*R)**(3)
W_a = []
for radii in R:
W_a.append(W(radii))
在這種情況下,我治療R作爲獨立的價值而不是kR的組合
打印W_a的長度給了我與mu numpy數組完全相同的大小,所以一切都很好。
此功能將發揮作用的整體隨着包括在西格瑪
def sigma(R): # Mass Varience
k1 = lambda k: k**2*P(k)*W(R)**2
norm1 = 1/(2*np.pi**2)
return (integrate.quad(k1, 0, np.Inf))
sigma_a = []
for radii in R:
sigma_a.extend(sigma(radii))
積分的這一功能會創建一個元組,當然。但是對於R中的每個值,我想創建一個列表或一個數組。因此,當使用.extend()
時,我的陣列長度現在加倍,長度現在爲334394.
如何將它修正爲積分評估W(kR)中每個R的位置,返回相同大小的數組, 167197?