在python中编写一些代码来评估基本函数.我有一个带有一些值的二维数组,我想将这个函数应用于每个值并获得一个新的二维数组:
import numpy as N
def makeGrid(dim):
''' Function to return a grid of distances from the centre of an array.
This version uses loops to fill the array and is thus slow.'''
tabx = N.arange(dim) - float(dim/2.0) + 0.5
taby = N.arange(dim) - float(dim/2.0) + 0.5
grid = N.zeros((dim,dim), dtype='float')
for y in range(dim):
for x in range(dim):
grid[y,x] = N.sqrt(tabx[x]**2 + taby[y]**2)
return grid
import math
def BigGrid(dim):
l= float(raw_input('Enter a value for lambda: '))
p= float(raw_input('Enter a …Run Code Online (Sandbox Code Playgroud) 我有一个数据数组,其中某个整数N的维度为(N,3),它指定了3D空间中粒子的轨迹,即每个行条目是粒子的(x,y,z)坐标.这个轨迹是平滑且简单的,我希望能够将多项式拟合到这个数据.
我可以使用np.polyfit只用(x,y)坐标来做到这一点:
import numpy as np
#Load the data
some_file = 'import_file.txt'
data = np.loadtxt(some_file)
x = data[:,0]
y = data[:,1]
#Fit a 4th order polynomial
fit = np.polyfit(x,y,4)
Run Code Online (Sandbox Code Playgroud)
这给了我多项式的系数,没有问题.
我如何将其扩展到我需要描述x,y,z坐标的多项式的情况?
我想创建一个动画的堆积条形图。
有一个很棒的教程,它展示了如何为折线图制作动画。
但是,对于动画条形图,BarContainer 对象没有“set_data”的任何属性。因此,我每次都被迫清除图形轴,例如,
fig=plt.figure()
def init():
plt.cla()
def animate(i):
p1 = plt.bar(x_points,y_heights,width,color='b')
return p1
anim = animation.FuncAnimation(fig,animate,init_func=init,frames=400,interval=10,blit=False)
Run Code Online (Sandbox Code Playgroud)
是否有另一种选择,遵循链接的样式,这样我就不必每次都清除轴?谢谢。
我正在尝试使用scipy.optimize.curve_fit. 我已经阅读了文档和这篇 StackOverflow 帖子,但似乎都没有回答我的问题。
我有一些简单的 2D 数据,它们看起来近似于一个三角函数。我想使用scipy.
我的方法如下:
from __future__ import division
import numpy as np
from scipy.optimize import curve_fit
#Load the data
data = np.loadtxt('example_data.txt')
t = data[:,0]
y = data[:,1]
#define the function to fit
def func_cos(t,A,omega,dphi,C):
# A is the amplitude, omega the frequency, dphi and C the horizontal/vertical shifts
return A*np.cos(omega*t + dphi) + C
#do a scipy fit
popt, pcov = curve_fit(func_cos, t,y)
#Plot fit …Run Code Online (Sandbox Code Playgroud) 我正在用Python工作。我有N星星,每颗星星的质量都是一个太阳质量M_0。我想将这些恒星随机分布在半径为 的体积中R,使得密度分布遵循普卢默模型,由以下公式给出:

我知道M在这种情况下这是总簇质量M=NM_0,但不确定我将如何编码这种质量分布。
考虑代码,
PROGRAM TRIG_TEST
IMPLICIT NONE
DOUBLE PRECISION, PARAMETER :: PI=4.D0*DATAN(1.0D)
print *, sin(PI/2.0), cos(PI/2.0)
END PROGRAM TRIG_TEST
Run Code Online (Sandbox Code Playgroud)
编译gfortran输出,
1.0000000000000000 6.1232339957367660E-017
Run Code Online (Sandbox Code Playgroud)
我知道常见的浮点问题,但是函数sin完全相同 1 但cos函数不完全相同 0 是否有原因?
gfortran如何处理整数与实数的幂运算?我一直以为是相同的,但请考虑以下示例:
program main
implicit none
integer, parameter :: dp = selected_real_kind(33,4931)
real(kind=dp) :: x = 82.4754500815524510_dp
print *, x
print *, x**4
print *, x**4.0_dp
end program main
Run Code Online (Sandbox Code Playgroud)
用gfortran编译给出
82.4754500815524510000000000000000003
46269923.0191143410452125643548442147
46269923.0191143410452125643548442211
Run Code Online (Sandbox Code Playgroud)
现在,显然这些数字几乎是一致的-但是,如果gfortran以相同的方式处理整数和实数以求幂,我希望它们是相同的。是什么赋予了?
我试图在Python中绘制一个右升天 - 赤纬,极坐标图,其中角度表示正确的提升,半径为赤纬,范围在±30之间.
我的代码是
import numpy
import matplotlib.pyplot as pyplot
ra = [345.389547454166689,31.892236646759279,45.893722479722229,93.955296573703706,160.079453957685217,211.154701609814822,256.486559377222193,307.258751710462889,299.691923545370344,340.364168244814834,335.077343971296386,358.126565808425880]
dec = [23.835021447037050,25.218513920000003,27.509148433518519,26.551432991388879,-25.077519630833340,-20.134061982500004,-21.042512836851849,-4.903512838240742,-0.506450475370370,14.280932901944448,19.222101837500002,18.792707990925926]
fig = pyplot.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8],polar=True)
ax.set_ylim(-30,30)
ax.set_yticks(numpy.arange(-30,30,10))
ax.scatter(ra,dec,c ='r')
pyplot.show()
Run Code Online (Sandbox Code Playgroud)
这将生成以下图表:
显然,我误解了极坐标图是如何工作的,因为RA与θ= 0的角度不对应.例如,我的一个点应该具有RA = 45.89度,但似乎没有任何点对应于此.
关于我做错了什么的建议?
我想“添加”两个矩阵,一个形状a为 ( K,T) 的矩阵和一个形状b为 的矩阵(K,N),以产生形状为 的矩阵(K,T,N)
以下工作正常:
import numpy as np
from numba import njit
@njit
def add_matrices(a, b):
K, T, N = a.shape[0], a.shape[1], b.shape[1]
result_matrix = np.empty((K, T, N))
for k in range(K):
for t in range(T):
for n in range(N):
result_matrix[k, t, n] = a[k, t] + b[k, n]
return result_matrix
K = 10
T = 11
N = 12
a = np.ones((K,T))
b = np.ones((K,N))
result = …Run Code Online (Sandbox Code Playgroud)