a = array([[1, 2], [3, 4]]) a.size a.shape a.dtype a.itemsize a.nbytes a.strides array(a, order='F').strides a = rand(1000, 1000) timeit -n 100 b1 = a.flatten() timeit -n 100 b2 = a.ravel() array_equal(a.flatten(), a.ravel()) b1 = a.flatten() b2 = a.ravel() # return the address of the memory block id = lambda x: x.__array_interface__['data'][0] print(id(a), id(b1), id(b2)) b = zeros(1000000) timeit -n 100 b[:] = a.ravel() timeit -n 100 b[:] = a.T.ravel() timeit -n 100 b[:] = a.ravel(order='F') a = rand(10000, 1000) b = arange(10000) c = a + b timeit -n 10 c = a + tile(b.reshape((-1, 1)), (1, 1000)) timeit -n 10 c = a + b.reshape((-1, 1)) array_equal(a + tile(b.reshape((-1, 1)), (1, 1000)), a + b.reshape((-1, 1))) a = rand(10000, 100) ind = randint(low=0, high=10000, size=10000) timeit -n 100 b = a[ind,:] timeit -n 100 b = take(a, ind, axis=0) array_equal(a[ind,:], take(a, ind, axis=0)) ind = a[:,0] > .5 timeit -n 10 b = a[ind,:] timeit -n 10 b = compress(ind, a, axis=0) array_equal(a[ind,:], compress(ind, a, axis=0)) def loadtxt_fast(filename, dtype=int32, skiprows=0, delimiter=' '): def iter_func(): with open(filename, 'r') as infile: for _ in range(skiprows): next(infile) skip = 0 for line in infile: line = line.rstrip().split(delimiter) for item in line: yield dtype(item) loadtxt_fast.rowlength = len(line) data = np.fromiter(iter_func(), dtype=dtype) data = data.reshape((-1, loadtxt_fast.rowlength)) return data a = randint(low=0, high=1000, size=(100000, 10)) fn = '_array.txt' savetxt(fn, a, fmt='%d') timeit -n 1 b = loadtxt(fn) timeit -n 1 b = loadtxt_fast(fn) array_equal(loadtxt(fn), loadtxt_fast(fn)) a = rand(1000000) timeit -n 10 max(a) timeit -n 10 a.max() max(a) == a.max()