In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pandas import DataFrame, Series
%matplotlib inline
In [2]:
from numpy.random import randn
In [3]:
arr = randn(6)
arr.sort()
arr
Out[3]:
In [4]:
arr = randn(3, 5)
arr
Out[4]:
In [5]:
arr[:, 0].sort() # sort first column values in-place
arr
Out[5]:
In [6]:
arr = randn(5)
arr
Out[6]:
In [7]:
np.sort(arr)
Out[7]:
In [8]:
arr
Out[8]:
In [9]:
arr = randn(3, 5)
arr
Out[9]:
In [10]:
arr.sort(axis=1)
arr
Out[10]:
In [11]:
arr[:, ::-1]
Out[11]:
In [12]:
values = np.array([5, 0, 1, 3, 2])
indexer = values.argsort()
indexer
Out[12]:
In [14]:
values[indexer]
Out[14]:
In [16]:
arr = randn(3, 5)
arr[0] = values
arr
Out[16]:
In [17]:
arr[:, arr[0].argsort()]
Out[17]:
In [18]:
first_name = np.array(['Bob', 'Jane', 'Steve', 'Bill', 'Barbara'])
last_name = np.array(['Jones', 'Arnold', 'Arnold', 'Jones', 'Walters'])
sorter = np.lexsort((first_name, last_name))
zip(last_name[sorter], first_name[sorter])
Out[18]:
In [19]:
values = np.array(['2:first', '2:second', '1:first', '1:second', '1:third'])
key = np.array([2, 2, 1, 1, 1])
indexer = key.argsort(kind='mergesort')
indexer
Out[19]:
In [20]:
values.take(indexer)
Out[20]:
In [21]:
arr = np.array([0 ,1,7, 12, 15])
arr.searchsorted(9)
Out[21]:
In [22]:
arr.searchsorted([0, 8, 11, 16])
Out[22]:
In [23]:
arr = np.array([0, 0, 0, 1, 1, 1, 1])
arr.searchsorted([0, 1])
Out[23]:
In [24]:
arr.searchsorted([0, 1], side='right')
Out[24]:
In [25]:
data = np.floor(np.random.uniform(0, 10000, size=50))
data
Out[25]:
In [27]:
bins = np.array([0, 100, 1000, 5000, 10000])
data
Out[27]:
In [29]:
labels = bins.searchsorted(data)
labels
Out[29]:
In [30]:
Series(data).groupby(labels).mean()
Out[30]:
In [31]:
np.digitize(data, bins)
Out[31]:
In [33]:
X = randn(4, 4)* 10.0
X
Out[33]:
In [34]:
X[:, 0]
Out[34]:
In [36]:
y = X[:, :1] # 切片操作可产生二维结果
X
Out[36]:
In [37]:
y
Out[37]:
In [38]:
np.dot(y.T, np.dot(X, y))
Out[38]:
In [39]:
Xm = np.matrix(X)
ym = Xm[:, 0]
Xm
Out[39]:
In [40]:
ym
Out[40]:
In [41]:
ym.T * Xm * ym
Out[41]:
In [42]:
Xm.I * X
Out[42]:
In [43]:
mmap = np.memmap('mymmap', dtype='float64', mode='w+', shape=(10000, 10000))
mmap
Out[43]:
In [44]:
section = mmap[:5]
section[:] = np.random.randn(5, 10000)
mmap.flush()
mmap
Out[44]:
In [45]:
del mmap
In [46]:
mmap = np.memmap('mymmap', dtype='float64', shape=(10000, 10000))
mmap
Out[46]:
In [48]:
arr_c = np.ones((1000, 1000), order='C')
arr_f = np.ones((1000, 1000), order='F')
arr_c.flags
Out[48]:
In [49]:
arr_f.flags
Out[49]:
In [50]:
arr_f.flags.f_contiguous
Out[50]:
In [51]:
%timeit arr_c.sum(1)
In [52]:
%timeit arr_f.sum(1)
In [53]:
arr_f.copy('C').flags
Out[53]:
In [54]:
arr_c[:50].flags.contiguous
Out[54]:
In [55]:
arr_c[:, :50].flags
Out[55]:
In [ ]: