Там уже полный список советов для питона здесь , так что я прошу подсказки , которые конкретно применимы к использованию numpy
, scipy
или pylab
библиотеки.
Это могут быть как способы сокращения кода, уже используемого numpy
, так и способы сокращения общих операций python с использованием этих библиотек.
Один совет за ответ, пожалуйста.
pylab
это простоmatplotlib.pyplot
+numpy
в устаревшем общем пространстве имен. Этаnumpy
частьpylab
тривиальна в том смысле, что в их импорте содержится одинаковое количество байтов, поэтому дополнительно могут быть получены только графические объектыpylab
, но я подозреваю, что это не то, что вы имели в виду в своем вопросе.numpy
пакетов. Напримерpylab.randint
, действует там, где потребуется numpynumpy.random.randint
. Поэтому для игры в гольфpylab
следует предоставить более короткий код.Ответы:
Использование Марка из Numpy в вещании
Вещание означает репликацию многомерного массива вдоль некоторых его одноэлементных измерений, чтобы соответствовать размеру другого массива. Это происходит автоматически для массивов Numpy, когда к ним применяются арифметические операторы.
Например, для создания таблицы умножения 10 × 10 вы можете использовать
Попробуйте онлайн!
Здесь
t
создается как массив Numpy[1, 2, ..., 10]
. Это имеет форму (10,), которая эквивалентна (1,10). Другой массив операндовt[:,None]
имеет размер (10,1). Умножение двух массивов неявно дублирует их, поэтому они ведут себя так, как если бы они оба имели форму (10,10). Результат, который также имеет форму (10,10), содержит произведения для всех пар записей в исходных массивах.источник
zip
с вещанием, это придет в своем собственном ответе?[*zip(t)]
имеет тот же счетчик байтов, что и более читаемыйt[:,None]
. Но вы правы, это, возможно, стоит отметить, поэтому я добавил это сюда[*zip(t)]
было бы на два байта короче, если бы было больше измерений.[*zip(t)]
будет работать только на Python 3.my \t = 1..10; .fmt('%3d').put for t «*» t[*,Empty]
или вы могли бы использоватьzip(t)
Используйте r _ [...] вместо диапазона (...)
Numpy предоставляет синтаксис, подобный matlab, для создания массива
r_[...]
. Любая запись среза в скобках интерпретируется как массив с указанным диапазоном. Так, напримерэквивалентно
и для большинства применений может заменить
Он также может обрабатывать более сложные выражения. Например, чтобы получить индексы от 0 до 10 и снова отступить,
источник