我可以通过以下方式创建一个从0到30的包含100个等间距数字的数组 -
theta = linspace(0,30,100)
可以从0到30获取一个包含100个数字的数组,这些数字不是均匀间隔的,而是根据它们的正弦函数加权。下面的图片可以让你大致了解我想要的内容。我定义的theta选择均匀地选择点(就像第一张图片)。我希望该数组按其正弦函数进行加权。随着数字从0到30的增加,它们的sin(value)值也会增加,因此在我的数组中,我希望更频繁地选择较高的数字(就像第二张图片)。
我认为我有解决方案。它需要一个最初是线性间隔的数组,然后对其进行正弦运算,接着返回经过缩放的正弦值,使其末尾与线性数组相同。
import numpy as np
import matplotlib.pyplot as plt
def sinespace(m=90, n=10):
x = np.linspace(0, m, n)
s = np.sin(np.deg2rad(x))
return (s/s[-1])*m
s = sinespace()
print(s)
plt.plot(s, np.ones_like(s), 'ro')
plt.show()
我不确定您是否需要更具体的内容,但是您可以通过从 linspace 开始创建任意数组。对于您的“sin”情况,请尝试以下代码:
theta = np.sin(np.linspace(0,np.pi/6,100)) * 30 / np.sin(np.pi/6)
Sin 0 = 0
,所以我的列表中不应该有0。它应该从0到30选择100个值,但不是均匀分布...它应该从0-10选择约10个值,然后从10到20选择约30个值,最后从20到30选择约60个值。 - Panchi
np.sinespace
而不是linspace
或logspace
。 - Ffisegydd