Блог о програмировании и программистах

Чем больше всматривашься в код, тем больше код всматривается в тебя

Кратко о библиотеке numpy

1)Методы класса ndarray

  • ndarray.ndim - количество измерений ил ранк матрицы
  • ndarray.shape - возвращает количество измерений по каждой из осей (n,m), где n - количество строк, m - количество столбцов
  • ndarray.size - количество элементов в массиве
  • ndarray.dtype - тип элементов массива
  • ndarray.itemsize - размер в байтах каждого элемента в массиве
  • ndarray.data - буфер, содержащий элементы массива

2)Создание массива

        
              import numpy as np
            a = np.array([2,3,4])
            a.dtype #dtype('int64')
            b = np.array([1.2, 3.5, 5.1])
            b.dtype #dtype('float64')

            #создание двухмерного массива
            b = np.array([(1.5,2,3), (4,5,6)])
            #создание трехмерного массива
            b = np.array([((1.5,0.1,2.0),(1.5,0.1,2.0)), ((1.5,0.1,2.0),(1.5,0.1,2.0))])
            #тип элементов может задан в момент создания
            c = np.array( [ [1,2], [3,4] ], dtype=complex )
        
    

Подробно о классах в Python

1)Области видимости

Пример области видимости функций и переменных:
        
        def scope_test():
            def do_local():
                spam = "local spam"
            def do_nonlocal():
                nonlocal spam
                spam = "nonlocal spam"
            def do_global():
                global spam
                spam = "global spam"
            spam = "test spam"
            do_local()
            print("After local assignment:", spam)
            do_nonlocal()
            print("After nonlocal assignment:", spam)
            do_global()
            print("After global assignment:", spam)

        scope_test()
        print("In global scope:", spam)
        #The output of the example code is:
        """
        After local assignment: test spam
        After nonlocal assignment: nonlocal spam
        After global assignment: nonlocal spam
        In global scope: global spam
        """
        
    
....

Кратко о метаклассах в Python

О работе с метакласами по порядку:

1)Простой пример создания метакласса:

# coding=utf-8
class AttributeInitType(type):
    def __call__(self, *args, **kwargs):
        """Вызов класса при котором создается новый объект. """
        #создаем сам объект
        obj = type.__call__(self, *args)
        #добавляем нашему классу переданные атрибуты
        for name in kwargs:
            setattr(obj, name, kwargs[name])
        # вернем готовый объект
        return obj

....

Интересные особенности работы со словарями

Пишу про то, с чем непосредственно самому приходилось работать

1)Подсчет элементов в списке:

from collections import defaultdict
d = defaultdict(int)
color_list = ['red','black','red','blue']
for color in color_list:
    d[color] += 1
#{'blue': 1, 'black': 1, 'red': 2}
print d

2)Соединение двух списков в один словарье:

from itertools import izip
names = ['raymond', 'rachel', 'matthew']
colors = ['red', 'green', 'blue']
d = dict(izip(names, colors))
# {'matthew': 'blue', 'rachel': 'green', 'raymond': 'red'}
print d