Remove points in a straight line
A look at the second plot in the post shows that something has gone wrong. There are four points in a line here:



This shouldn't be possible, since "points that create a straight line when plotted" have been removed. How did this happen? A look at the \$x\$ axis shows the cause. The first plot has the \$x\$ coordinate running from 0 to 96, but the second plot has the  \$x\$ coordinate running from 0 to 43, because the \$x\$ values for the omitted points have also been omitted.

To get the correct plot you have to remember the original \$x\$ coordinates and mask them at the same time as you mask the \$y\$ values, like this:

x = np.arange(len(pat))[less_than_180]
y = pat[less_than_180]
plt.plot(x, y)
plt.plot(x, y, 'bo')


See below for the corrected plot.
The name degrees could be better chosen — there are already functions math.degrees in the standard library, and numpy.degrees in NumPy, and a reader might well imagine that your function does something similar. A name like vertex_angle would be better (see Wikipedia).
The line:

pattern = pattern[1:-1] # &lt;- No angles between the end points


discards the endpoints of the data. But surely you want to keep the endpoints in the plot?
Given three points \$A, B, C\$, the code finds the vertex angle \$∠ABC\$ and compares it with 180°. An alternative approach is to linearly interpolate between the endpoints, finding \$B′ = ½(A + C)\$, and see if \$B′\$ is close enough to \$B\$. Like this:

# Boolean mask for the points we are going to plot.
mask = np.ones_like(pattern, dtype=bool)

if len(pattern) &gt; 2:
    # Linearly interpolate between points that are two apart.
    interpolants = (pattern[:-2] + pattern[2:]) / 2

    # Don't plot points that are equal to their interpolant.
    mask[1:-1] = interpolants != pattern[1:-1]

x = np.arange(len(pattern))[mask]
y = pattern[mask]
plt.plot(x, y)
plt.plot(x, y, 'bo')
plt.show()


Here's the resulting plot:



If your data is floating-point then you will need some tolerance in the comparison of points to their interpolants. For example, you might use numpy.isclose:

# Don't plot points that are close their interpolant.
mask[1:-1] = ~np.isclose(interpolants, pattern[1:-1])