簡體   English   中英

numpy數值微分

[英]numpy numerical differentiation

我已經沿着數組的寬度繪制了一條曲線,即數組列的總和:

import numpy as np
from astropy.io import fits
import matplotlib.pyplot as plt

#def plot_slope(x, y):
#    xs = x[1:] - x[:-1]
#    ys = y[1:] - y[:-1]
#    plt.plot(x[1:], ys / xs)

hdulist = fits.open('w1_subtracted_2_deg.fits')
nodisk_data, nodisk_header = hdulist[0].data, hdulist[0].header

x = range(nodisk_data.shape[1])
y = np.sum(nodisk_data, axis = 0)
xticks = [0, 183, 365, 547, 729, 912, 1095, 1277, 1459]
long_marks = [24, 18, 12, 6, 0, 354, 348, 342, 335]

ax = plt.axes()
ax.set_xticks(xticks)
ax.set_xticklabels(long_marks)

plt.plot(x, y, linewidth = 0.5, color = 'red')
#plot_slope(x, y)
plt.title('Longitudinal sum of flux density per steradian')
plt.xlabel(r'Galactic longitude, $\ell$')
plt.ylabel(r'Summed flux density per steradian, $MJ.sr^{-1}$')
plt.grid(True)
plt.show()

plt.savefig('add_cols.png')

hdulist.close()

注釋掉的函數是我嘗試以數值方式計算曲線的導數,但我得到了

  File "C:/Users/Jeremy/Dropbox/Astro480/NEOWISE/add_cols.py", line 6, in plot_slope
    xs = x[1:] - x[:-1]

TypeError: unsupported operand type(s) for -: 'range' and 'range'

這里這里的問題並不是我想要解決的問題。 如何修復我的小函數來繪制導數? 或者是否有內置函數來做到這一點? 所有內置函數(例如我發現的scipy.misc.derivative都取決於了解您要區分的函數。

在 Python v3.x range()創建一個范圍對象而不是一個列表。 顯然范圍對象不支持算術。 嘗試使用numpy ndarray代替。

x = np.arange(nodisk_data.shape[1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM