Поскольку, что я видел, можно использовать мерзавца между репозиторием, получают с мерзавцем-svn (таким образом, у Вас мог быть репозиторий общественности мерзавца, который будет "зеркалом" svn repo, Вы говорите о, но мерзавец repo мог быть размещен в Вас сайт).
Таким образом контроль/клон/нажатие/получение по запросу для пользователей мерзавца будет быстр. Затем я предполагаю, что можно добавить рычаги к мерзавцу repo для синхронизации с svn repo через мерзавца-svn, но необходимо будет иметь дело с конфликтом, пока Вы не используете различные ответвления.
, Что мы, вот то, что каждый dev имеет ответвление с его именем в нем, и он должен объединиться с основным ответвлением (таким образом, он обрабатывает конфликт), прежде чем администратор объединит свое ответвление с ведущим устройством без любого конфликта, так как dev уже обрабатывают его.
Hope эта справка.
Самая большая проблема для меня заключалась в том, что почти каждый стандартный оператор перегружен для распределения по массиву.
Определите список и массив
>>> l = range(10)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> import numpy
>>> a = numpy.array(l)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Умножение дублирует список Python, но распределяет по массив numpy
>>> l * 2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a * 2
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
Сложение и разделение не определены в списках Python
>>> l + 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "int") to list
>>> a + 2
array([ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
>>> l / 2.0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'list' and 'float'
>>> a / 2.0
array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
Перегрузки Numpy иногда обрабатывают списки как массивы
>>> a + a
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
>>> a + l
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
print pynan is pynan, pynan is NaN, NaN is NaN
Проверяет идентичность, т. Е. Является ли это одним и тем же объектом. Таким образом, результат должен быть True, False, True, потому что, когда вы делаете float (что угодно), вы создаете новый объект float.
a = (0, pynan)
print a, a[1] is pynan, any([aa is pynan for aa in a])
Я не знаю, что вас удивляет.
a = array(( 0, NaN ))
print a, a[1] is NaN, isnan( a[1] )
Это Мне пришлось бежать. :-) Когда вы вставляете NaN в массив, он конвертируется в объект numpy.float64, поэтому [1] is NaN не работает.
Все это кажется мне довольно неудивительным. Но тогда я действительно ничего не знаю о NumPy. : -)
NaN
не является одноэлементным, как None
, поэтому вы не можете использовать для него проверку is. Что делает его немного сложным, так это то, что NaN == NaN
равно False
, как того требует IEEE-754. Вот почему вам нужно использовать функцию numpy.isnan ()
, чтобы проверить, не является ли число с плавающей запятой. Или стандартная библиотека math.isnan ()
, если вы используете Python 2.6 +.
Я думаю, что это забавно:
>>> import numpy as n
>>> a = n.array([[1,2],[3,4]])
>>> a[1], a[0] = a[0], a[1]
>>> a
array([[1, 2],
[1, 2]])
С другой стороны, для списков Python это работает по назначению:
>>> b = [[1,2],[3,4]]
>>> b[1], b[0] = b[0], b[1]
>>> b
[[3, 4], [1, 2]]
Забавное примечание: у самого numpy была ошибка в перемешивании
, потому что она использовала эту нотацию :-) (см. здесь ).
Причина в том, что в первом случае мы имеем дело с представлениями массива, поэтому значения перезаписываются на месте.
от Нила Мартинсена-Баррелла в numpy-обсуждение 7 сентября -
Тип ndarray, доступный в Numpy, не концептуально расширение Итерации Python. Если вы хотите помочь другим пользователям Numpy с этим вопрос, вы можете редактировать документацию в редакторе онлайн-документации по адресу numpy-docs
Значение истинности для массива Numpy отличается от значения истинности для типа последовательности Python, где любая непустая последовательность является истинной.
>>> import numpy as np
>>> l = [0,1,2,3]
>>> a = np.arange(4)
>>> if l: print "Im true"
...
Im true
>>> if a: print "Im true"
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use
a.any() or a.all()
>>>
Числовые типы истинны, если они не равны нулю и как набор чисел массив numpy наследует это определение. Но с набором чисел истина могла бы разумно означать «все элементы не равны нулю» или «хотя бы один элемент не равен нулю». Numpy отказывается угадывать, какое определение имеется в виду, и вызывает вышеуказанное исключение. Использование методов .any ()
и .all ()
позволяет указать, какое значение имеется в виду.
>>> if a.any(): print "Im true"
...
Im true
>>> if a.all(): print "Im true"
...
>>>
При нарезке создаются виды, а не копии.
>>> l = [1, 2, 3, 4]
>>> s = l[2:3]
>>> s[0] = 5
>>> l
[1, 2, 3, 4]
>>> a = array([1, 2, 3, 4])
>>> s = a[2:3]
>>> s[0] = 5
>>> a
array([1, 2, 5, 4])