numpy的切片索引是从0开始,左闭右开的。
Numpy.linspace
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
含义是返回闭区间 [ s t a r t , s t o p ] [start,stop] [start,stop]分布均匀的num个点,这里值得强调的是,返回的点中必须包含start和stop,这意味着每个点之间的间隔为:
d = s t o p − s t a r t n u m − 1 d=\frac{stop-start}{num-1} d=num−1stop−start
所以一般的当开始点为0时,间隔有时会出乎你的意料。
与pandas类似Numpy中也有类似的操作可以实现查找最大值的哪一个等等的操作,比如:
上图是通过如下代码生成的:
np.random.seed(0)
trainx = np.vstack((np.random.randn(50,2),np.random.randn(50,2)+4))
traint = np.hstack((-1*np.ones(50),np.ones(50)))[:,None]
plt.figure()
c0 = np.where(traint==-1)[0]
c1 = np.where(traint==1)[0]
plt.plot(trainx[c0,0],trainx[c0,1],'bo',markersize=10)
plt.plot(trainx[c1,0],trainx[c1,1],'ro',markersize=10)
我们想把红色点中最下方的点变为蓝色该如何实现呢?也许下面的代码对你有帮助:
print(trainx)
print(trainx[:,1])
print(max(trainx[:,1]))
print(np.where(trainx[:,1] == max(trainx[:,1]))[0][0])
尝试观察上面的输出,你应该能得到:
index = np.where(trainx[:,1] == min(trainx[50:100,1]))[0][0]
traint[index][0] *= -1