Skip to content

Instantly share code, notes, and snippets.

View joferkington's full-sized avatar
🏠
Working from home

Joe Kington joferkington

🏠
Working from home
View GitHub Profile
@joferkington
joferkington / slice_explorer.py
Created May 31, 2013 02:49
Simple pcolormesh data explorer
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
def main():
data = np.random.random((10,10,10))
ex = Explorer(data)
ex.show()
class Explorer(object):
@joferkington
joferkington / gist:5074650
Created March 3, 2013 05:30
Print the largest (by area) contiguous object in an array
import numpy as np
import scipy.ndimage as ndimage
# The array you gave above
data = np.array(
[
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
@joferkington
joferkington / struct_vs_numpy_example.py
Last active December 7, 2015 18:52
Writing an arbitrary, pre-existing numpy array to a hetergenous binary format
import numpy as np
# Our input data...
x = np.random.randint(0, 3200, (1000,1000))
# We're replacing something like
# struct.pack(">"+"hB"*x.size)
# Note that that's a 2-byte signed int followed by 1-byte unsigned
# We'll need to create the output 1D array and assign manually:
@joferkington
joferkington / excel_col_names.py
Created October 10, 2012 03:06
excel-style label conversion
"""MIT license"""
import xlrd
import re
def col2index(name):
name = name.upper()
col = -1
for i, letter in enumerate(name[::-1]):
col += (ord(letter) - ord('A') + 1) * 26**i
import numpy as np
def process_file(filename, num_cols, delimiter='\t'):
def items(infile):
for line in infile:
for item in line.rstrip().split(delimiter):
yield float(item)
with open(filename, 'r') as infile:
data = np.fromiter(items(infile))
@joferkington
joferkington / zeroing.py
Created January 30, 2012 21:34
Example for babe
# Make up some data in nested lists
strain_data = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
# To make things a bit more readable, let's define a function that operates
# on a single list...
def zero(data):
"""Returns the difference between the items in "data" and its first item."""
# This is a "list comprehension". It's basically a 1-line for loop
return [item - data[0] for item in data]
import matplotlib.pyplot as plt
def main():
resized = (8, 3)
basic_example()
basic_example(resized)
fixed_aspect()
fixed_aspect(resized)
import numpy as np
import pandas as pd
#-- Generate some data similar to yours
idx = np.arange(20)
np.random.shuffle(idx)
idx1 = idx[:15]
np.random.shuffle(idx)
idx2 = idx[:10]
import matplotlib.pyplot as plt
from matplotlib.mlab import csv2rec
from matplotlib.cbook import get_sample_data
#fname = get_sample_data('percent_bachelors_degrees_women_usa.csv')
fname = 'percent_bachelors_degrees_women_usa.csv'
gender_degree_data = csv2rec(fname)
# These are the colors that will be used in the plot
import random
import matplotlib.pyplot as plt
from mpldatacursor import datacursor
def main():
accounts = generate_accounts()
lookup = plot(accounts)
datacursor(formatter=Formatter(lookup), bbox=dict(alpha=1))
plt.show()