1

голосов
1

ответ
1.6k

Просмотры

Получить все перестановки без замены?

Я хотел бы получить все перестановки списка, но без каких-либо повторений, независимо от заказа. Это своего рода трудно описать, так что я приведу пример. Я действительно хотел бы знать название этой операции, потому что я использую его все время. Кроме простой способ для достижения этой цели в питон действительно поможет мне. Спасибо! например, [ 'Foo', 'бар', 'ля'] ==> [ 'Foo', 'бар'] [ 'Foo', 'ля'] [ 'ба', 'ля']
TimRich
19

голосов
5

ответ
8.7k

Просмотры

Заданные значения по диагонали pandas.DataFrame

У меня есть панд dataframe Я хотел бы с диагональной до 0 импортных Numpy импортных панд DF = pandas.DataFrame (numpy.random.rand (5,5)) Df Out [6]: 0 1 2 3 4 0 0,536596 0,674319 0,032815 0.908086 0.215334 1 0.735022 0.954506 0.889162 0.711610 0.415118 2 0,119985 0.979056 0.901891 0.687829 0.947549 3 0.186921 0.899178 0.296294 0.521104 0.638924 4 0,354053 0.060022 0.275224 0.635054 0.075738 5 строк × 5 столбцов теперь я хочу, чтобы установить диагональ до 0: для г в диапазоне (LEN (DF. индекс)): для J в диапазоне (LEN (df.columns)): если я == J: df.loc [I, J] = 0 DF Out [9]: 0 1 2 3 4 0 0,000000 0,674319 0,032815 0,908086 0,215334 1 0,735022 0.000000 0.889162 0.711610 2 0,119985 0,415118 0,979056 0,000000 0,687829 0,947549 0,186921 0,899178 3 0,296294 0,000000 0,638924 0,354053 0,060022 4 0,275224 0,635054 0,000000 5 строк × 5 столбцов, но должно быть более Pythonic способом, чем это !?
TimRich
4

голосов
1

ответ
820

Просмотры

Django Many to Many and admin

I have a django ap which has a rather complicated model setup. I ended up using multi level composition to create a hierarchical model. All the relations are one to one, so I could have use inheritance but I chose not to so that i would benefit from having object composition for my models, this means I can do things like product.outerframe.top.cost which make the complicated calculations I have to preform, a lot better organised. However, This model arrangement makes using the django admin tricky. I basically have a through table, i.e the outerframe table is just a bunch of foreign keys to other tables (with unique constraint on each). I ended up oerriding the add_view() and change_view() methods of ModelAdmin, which is pretty hard. Is there an easier way to deal with many to many / through tables when using the django admin? The tables are arranged like so: Product > outerframe, innerframe, glass, other outerframe > top, bottom, side etc. innerframe > top, bottom, side etc. glass > glass_type etc. other > accessories etc. Here are my models: class Product(mixins.ProductVariables): name = models.CharField(max_length=255) sku = models.CharField(max_length=100, unique=True, db_index=True) image = thumbnail.ImageField(upload_to='product_images', blank=True) description = models.TextField(blank=True) group = models.ForeignKey('ProductGroup', related_name='products', null=True) hidden = models.BooleanField(default=False) product_specific_mark_up = models.DecimalField(default=1.0, max_digits=5,decimal_places=2) # Methods for totals def total_material_cost(self, width, height, options): return sum([ self.outerframe.cost(width, height, options), self.innerframe.cost(width, height, options), self.glass.cost(width, height, options), self.other.cost(width, height, options), ]) def total_labour_time(self, width, height, options): return sum([ self.outerframe.labour_time(width, height, options), self.innerframe.labour_time(width, height, options), self.glass.labour_time(width, height, options), self.other.labour_time(width, height, options), ]) def total_co2_output(self, width, height, options): return sum([ self.outerframe.co2_output(width, height, options), self.innerframe.co2_output(width, height, options), self.glass.co2_output(width, height, options), self.other.co2_output(width, height, options), ]) @property def max_overall_width(self): return 1000 @property def max_overall_height(self): return 1000 def __unicode__(self): return self.name class OuterFrame(models.Model, mixins.GetFieldsMixin, mixins.GetRelatedClassesMixin): top = models.OneToOneField(mixins.TopFrame) bottom = models.OneToOneField(mixins.BottomFrame) side = models.OneToOneField(mixins.SideFrame) accessories = models.OneToOneField(mixins.Accessories) flashing = models.OneToOneField(mixins.Flashing) silicone = models.OneToOneField(mixins.Silicone) product = models.OneToOneField(Product) def cost(self, width, height, options): #accessories_cost = (self.accessories.cost if options['accessories'] else 0) #flashing_cost = (self.flashing.cost if options['flashing'] else 0) #silicone_cost = (self.silicone.cost if options['silicone'] else 0) return sum([ self.top.cost * (width / 1000), self.bottom.cost * (width / 1000), self.side.cost * (width*2 / 1000), #accessories_cost, #flashing_cost, #silicone_cost, ]) def labour_time(self, width, height, options): return datetime.timedelta(minutes=100) def CO2_output(self, width, height, options): return 100 # some kg measurement @classmethod def get_fields(cls): options = cls._meta fields = {} for field in options.fields: if field.name == 'product': continue if isinstance(field, models.OneToOneField): related_cls = field.rel.to related_fields = fields_for_model(related_cls, fields=related_cls.get_fields()) fields.update( { related_cls.__name__ + '_' + name:field for name, field in related_fields.iteritems() }) return fields class InnerFrame(models.Model, mixins.GetFieldsMixin, mixins.GetRelatedClassesMixin): top = models.OneToOneField(mixins.TopFrame) bottom = models.OneToOneField(mixins.BottomFrame) side = models.OneToOneField(mixins.SideFrame) accessories = models.OneToOneField(mixins.Accessories) product = models.OneToOneField(Product) def cost(self, width, height, options): #accessories_cost = (self.accessories.cost if options['accessories'] else 0) print self.top.cost return sum([ self.top.cost * (width / 1000), self.bottom.cost * (width / 1000), self.side.cost * (width*2 / 1000), # accessories_cost, ]) def labour_time(self, width, height, options): return datetime.timedelta(minutes=100) def CO2_output(self, width, height, options): return 100 # some kg measurement class Glass(models.Model, mixins.GetRelatedClassesMixin): glass_type_a = models.OneToOneField(mixins.GlassTypeA) glass_type_b = models.OneToOneField(mixins.GlassTypeB) enhanced = models.OneToOneField(mixins.Enhanced) laminate = models.OneToOneField(mixins.Laminate) low_iron = models.OneToOneField(mixins.LowIron) privacy = models.OneToOneField(mixins.Privacy) anti_slip = models.OneToOneField(mixins.AntiSlip) heat_film_mirror = models.OneToOneField(mixins.HeatMirrorField) posished_edges = models.OneToOneField(mixins.PolishedEdges) product = models.OneToOneField(Product) def cost(self, width, height, options): return sum([ ]) def labour_time(self, width, height, options): return datetime.timedelta(minutes=100) def CO2_output(self, width, height, options): return 100 # some kg measurement class Other(models.Model, mixins.GetRelatedClassesMixin): num_packages = models.OneToOneField(mixins.NumberPackages) product = models.OneToOneField(Product) def cost(self, width, height, options): return 100 def labour_time(self, width, height, options): return datetime.timedelta(minutes=100) def CO2_output(self, width, height, options): return 100 # some kg measurement mixins: class TimeCostMixin(models.Model, GetFieldsMixin): cost = models.DecimalField(default=0.0, max_digits=10, decimal_places=2) time = models.TimeField(default=datetime.timedelta(0)) class Meta: abstract = True ##### Frame ##### class FrameComponentMixin(TimeCostMixin): external_width = models.IntegerField(default=0) material_weight = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) u_value = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) class Meta: abstract = True class TopFrame(FrameComponentMixin): pass class BottomFrame(FrameComponentMixin): pass class SideFrame(FrameComponentMixin): pass class Accessories(TimeCostMixin): material_weight = models.DecimalField(default=0.0,max_digits=10,decimal_places=2) class Flashing(TimeCostMixin): pass class Silicone(TimeCostMixin): labour_time = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) ################# ##### Glass ##### class GlassTypeA(TimeCostMixin): material_weight = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) u_value = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) class GlassTypeB(TimeCostMixin): material_weight = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) u_value = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) class Enhanced(TimeCostMixin): material_weight = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) class Laminate(TimeCostMixin): material_weight = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) class LowIron(TimeCostMixin): pass class Privacy(TimeCostMixin): pass class AntiSlip(TimeCostMixin): pass class HeatMirrorField(TimeCostMixin): u_value = models.DecimalField(default=0.0, max_digits=10,decimal_places=2) class PolishedEdges(models.Model): cost = models.DecimalField(default=0.0, max_digits=10, decimal_places=2) ################## ##### other ##### class NumberPackages(models.Model): number_of_packages = models.IntegerField(default=0) ################## and a hair pulling admin! class ProductAdmin(AdminImageMixin, admin.ModelAdmin): inlines = [ProductDownloadInline, ProductConfigurationInline] add_form_template = 'admin/products/add_form.html' change_form_template = 'admin/products/add_form.html' @csrf_protect_m @transaction.atomic def add_view(self, request, form_url='', extra_context=None): extra_context = extra_context or {} "The 'add' admin view for this model." model = self.model opts = model._meta if not self.has_add_permission(request): raise PermissionDenied ModelForm = self.get_form(request) formsets = [] inline_instances = self.get_inline_instances(request, None) if request.method == 'POST': form = ModelForm(request.POST, request.FILES) if form.is_valid(): new_object = self.save_form(request, form, change=False) form_validated = True else: form_validated = False new_object = self.model() prefixes = {} for FormSet, inline in zip(self.get_formsets(request), inline_instances): prefix = FormSet.get_default_prefix() prefixes[prefix] = prefixes.get(prefix, 0) + 1 if prefixes[prefix] != 1 or not prefix: prefix = "%s-%s" % (prefix, prefixes[prefix]) formset = FormSet(data=request.POST, files=request.FILES, instance=new_object, save_as_new="_saveasnew" in request.POST, prefix=prefix, queryset=inline.get_queryset(request)) formsets.append(formset) ##### outer_frame_forms = [ modelform_factory(cls)(request.POST, prefix='OuterFrame_'+cls.__name__) for cls in models.OuterFrame.get_related_classes(exclude=['product']) ] inner_frame_forms = [ modelform_factory(cls)(request.POST, prefix='InnerFrame'+cls.__name__) for cls in models.InnerFrame.get_related_classes(exclude=['product']) ] glass_forms = [ modelform_factory(cls)(request.POST, prefix='InnerFrame'+cls.__name__) for cls in models.Glass.get_related_classes(exclude=['product']) ] other_forms = [ modelform_factory(cls)(request.POST, prefix='InnerFrame'+cls.__name__) for cls in models.Other.get_related_classes(exclude=['product']) ] ##### if all_valid(formsets +outer_frame_forms +inner_frame_forms +glass_forms +other_forms ) and form_validated: self.save_model(request, new_object, form, False) self.save_related(request, form, formsets, False) self.log_addition(request, new_object) ##### save object hierichy ##### # inner frame inner_frame = models.InnerFrame() inner_frame.product = new_object mapping = {f.rel.to:f.name for f in models.InnerFrame._meta.fields if f.name not in ['id','product']} for f in inner_frame_forms: obj = f.save() setattr(inner_frame, mapping[obj.__class__], obj) inner_frame.save() # outer frame outer_frame = models.OuterFrame() outer_frame.product = new_object mapping = {f.rel.to:f.name for f in models.OuterFrame._meta.fields if f.name not in ['id','product']} for f in outer_frame_forms: obj = f.save() setattr(outer_frame, mapping[obj.__class__], obj) outer_frame.save() # glass glass = models.Glass() glass.product = new_object mapping = {f.rel.to:f.name for f in models.Glass._meta.fields if f.name not in ['id','product']} for f in glass_forms: obj = f.save() setattr(glass, mapping[obj.__class__], obj) glass.save() # other other = models.Other() other.product = new_object mapping = {f.rel.to:f.name for f in models.Other._meta.fields if f.name not in ['id','product']} for f in other_forms: obj = f.save() setattr(other, mapping[obj.__class__], obj) other.save() ################################# return self.response_add(request, new_object) else: forms = SortedDict({}) forms['Outer Frame Variables'] = { cls.__name__: modelform_factory(cls)(prefix='OuterFrame_'+cls.__name__) for cls in models.OuterFrame.get_related_classes(exclude=['product']) } forms['Inner Frame Variables'] = { cls.__name__: modelform_factory(cls)(prefix='InnerFrame'+cls.__name__) for cls in models.InnerFrame.get_related_classes(exclude=['product']) } forms['Glass Variables'] = { cls.__name__: modelform_factory(cls)(prefix='InnerFrame'+cls.__name__) for cls in models.Glass.get_related_classes(exclude=['product']) } forms['Other Variables'] = { cls.__name__: modelform_factory(cls)(prefix='InnerFrame'+cls.__name__) for cls in models.Other.get_related_classes(exclude=['product']) } extra_context['forms'] = forms # Prepare the dict of initial data from the request. # We have to special-case M2Ms as a list of comma-separated PKs. initial = dict(request.GET.items()) for k in initial: try: f = opts.get_field(k) except models.FieldDoesNotExist: continue if isinstance(f, models.ManyToManyField): initial[k] = initial[k].split(",") form = ModelForm(initial=initial) prefixes = {} for FormSet, inline in zip(self.get_formsets(request), inline_instances): prefix = FormSet.get_default_prefix() prefixes[prefix] = prefixes.get(prefix, 0) + 1 if prefixes[prefix] != 1 or not prefix: prefix = "%s-%s" % (prefix, prefixes[prefix]) formset = FormSet(instance=self.model(), prefix=prefix, queryset=inline.get_queryset(request)) formsets.append(formset) adminForm = helpers.AdminForm(form, list(self.get_fieldsets(request)), self.get_prepopulated_fields(request), self.get_readonly_fields(request), model_admin=self) media = self.media + adminForm.media inline_admin_formsets = [] for inline, formset in zip(inline_instances, formsets): fieldsets = list(inline.get_fieldsets(request)) readonly = list(inline.get_readonly_fields(request)) prepopulated = dict(inline.get_prepopulated_fields(request)) inline_admin_formset = helpers.InlineAdminFormSet(inline, formset, fieldsets, prepopulated, readonly, model_admin=self) inline_admin_formsets.append(inline_admin_formset) media = media + inline_admin_formset.media context = { 'title': _('Add %s') % force_text(opts.verbose_name), 'adminform': adminForm, 'is_popup': IS_POPUP_VAR in request.REQUEST, 'media': media, 'inline_admin_formsets': inline_admin_formsets, 'errors': helpers.AdminErrorList(form, formsets), 'app_label': opts.app_label, 'preserved_filters': self.get_preserved_filters(request), } context.update(extra_context or {}) return self.render_change_form(request, context, form_url=form_url, add=True)
TimRich
4

голосов
2

ответ
121

Просмотры

Найти прямые предки (родители?) Из мерзавца совершить

Начать новый репо и добавить несколько фиксаций: # (03/01/ 17 @ 10 : 50AM) ( тим @ тим ): ~ тест MkDir && тест CD && мерзавец инициализации инициализируется пустой репозиторий в /home/tim/test/.git /. # (03/01/ 17 @ 11 : 17AM) ( тим @ тим ): ~ / тест @ мастер ✔ сенсорный ридми && мерзавец добавить --all && мерзавца совершить -am "ридй" [Мастер (корень фиксация) 1b7f299] ридй 1 файл изменен, 0 вставки (+), 0 делеции (-) Режим создания 100644 ридх. # (03/01/ 17 @ 11 : 17AM) ( тим @ тим ): ~ / тест @ мастер ✔ сенсорный МЕТОДИЧЕСКИЕ && мерзавец добавить --all && изменил мерзавец совершить -am "HowTo" [мастер fd46c4c] МЕТОДИЧЕСКИЕ 1 файл, 0 вставки (+), 0 делеции (-) Режим создания 100644 HOWTO. # (03/01/ 17 @ 11: 19am) ( тим @ тим ): ~ / тест @ мастер ✔ касайтесь ла && мерзавец добавить --all && мерзавец совершить -am "добавить ла" [мастер 4680089] добавить ла 1 файл изменен, 0 вставки (+), 0 делеции (-) режим 100644 ля создания. # (03/01/ 17 @ 11 : 20am) ( тим @ тим ): ~ / тест @ мастер ✔ Ls МЕТОДИЧЕСКИЙ л риде # (03/01/ 17 @ 11 : 20am) ( тим @ тим ): ~ / тест @ мастер ✔ эхо "привет" >> риого && эха "привет" >> HowTo # (03/01/ 17 @ 11 : 20am) ( тим @ тим ): ~ / тест @ мастер✗✗✗ мерзавец совершать -am «редактировать ридй и HowTo» [мастер - 8969440] редактировать ридй и HOWTO 2 файла изменен, 2 вставками (+) Итак , теперь мы имеем следующие фиксации: совершающие 8969440d52e578113f609d948e6ffd06cec96fa9 Автора: Тим Ричардсон Дата: Ср Мары 11- : 20: 54 +2017 +0000 редактировать ридй и HOWTO совершить 4680089c7c1a0ead84f6b2973fd6d9e1356fd5c0 Автор: Тим Ричардсон Дата: ср 1 март 11:20:06 +2017 +0000 добавить ли совершить fd46c4cf593752ec8163d8db21042c8dd336f529 Автор: Тим Ричардсон Дата: ср 1 март 11:18:09 +2017 + 0000 МЕТОДИЧЕСКИЕ совершить 1b7f299c5ad4fc50ce4913ab4cdbbdc761db0487 Автор: Тим Ричардсон Дата: ср 1 марта 11:17:50 +2017 +0000 ридми позволяет Checkout новую ветвь под названием тест и сбросить его в первоначальное обязательство: # (03/01/ 17 @ 11 : 26am) ( тим @ тим ): ~ /тест @ мастер ✔ GIT Checkout -b тест Перешел # новый филиал 'тест' (03/01/ 17 @ 11 : 27am) ( тим @ тим ): ~ / тест @ тест ✔ мерзавец сброс --hard 1b7f299c5ad4fc50ce4913ab4cdbbdc761db0487 ГОЛОВА сейчас в 1b7f299 ридми Если я вишневый выбрать совершить 8969440 это не удается , потому что она опирается на fd46c4c и 1b7f29 но не 4680089: # (03/01/ 17 @ 11 : 27am) ( тим @ тим ): ~ / тест @ тест✔ мерзавец вишневый выбрать 8969440 ошибки: не удался применить 8969440 ... редактировать риде и МЕТОДИЧЕСКУЮ подсказка: после разрешения конфликтов, отметьте исправленные пути намекают: с «мерзавцем добавить» или «мерзавец ет» подсказка: и зафиксировать результат с ' мерзавец совершить» , однако я могу вишневый выбрать 4680089c7 из 1b7f299c без каких - либо конфликтов , несмотря на то, что это не первый потомок степени на бревне мерзавца: # (03/01/ 17 @ 11 : 28am) ( тим @ тим ): ~ / тест @ тест ✗✗✗ мерзавец сброса --hard головка теперь в 1b7f299 ридми # (03/01/ 17 @ 12 : 10 вечера) ( Tim @ тим ): ~ / тест - тест @✔ мерзавец вишневого выбрать 4680089c7 [тест de3878f] добавить ла Дата: Ср Мар 1 11:20:06 +2017 +0000 1 файл изменен, 0 вставок (+), 0 делеции (-) режим 100644 ля создания Таким образом, существует граф зависимостей между пластырями который выглядит следующим образом: + --------- + | | | 1b7f299 + -------- + | | | + --------- + | + ---------- + -----> + | | | 8969440 | + --------- + | | | | | | + ---------- + | fd46c4c + -------- + | | + --------- + + --------- + | | | 4680089 | | | + --------- + Мой вопрос дается больше репо, как можно рассчитать график зависимостей в терминах патчей? Как я могу использовать мерзавец сказать, какой обязано полагаться на других?
TimRich
21

голосов
5

ответ
14k

Просмотры

Получить среднее между несколькими DataFrames панд

Я генерируя ряд dataframes с одной и той же формой, и я хочу, чтобы сравнить их друг с другом. Я хочу, чтобы иметь возможность получить среднее и медиану через dataframes. Source.0 Source.1 источника.2 источника.3 кластера 0,001182 0,184535 0 0,814230 0,000054 0,000001 0,160490 1 0,839508 0,000001 0,000001 0,173829 2 0,826114 0,000055 0,000432 0,180065 3 0,819502 0,000001 0,000152 0,157041 4 0,842694 0,000113 0,000183 0,174142 5 0,825674 0,000001 0,000001 0,151556 6 0,848405 0,000038 0,000771 7 0.177583 0.821645 0.000001 0.000001 0.202059 8 0.797939 0.000001 0.189537 9 0,000025 0.810410 0.000028 10 0.006142 0.003041 0.493912 0.496905 11 0.003739 0.002367 0.514216 0.479678 12 0. 000354 8 0,000001 0,202182 0,797333 0,000485 9 0,000348 0,181399 0,818252 0,000001 10 0,003050 0,000247 0,506777 0,489926 11 0,004420 0,000001 0,513927 0,481652 12 0,006488 0,001396 0,527197 0,464919 13 0,001510 0,000001 0,525987 0,472502 14 0,000001 0,000001 0,520737 0,479261 15 0,000001 0,001765 0,515658 0,482575 16 0,000001 0,000001 0,492550 0,507448 17 0,002855 0,000199 0,526535 0.470411 18 0.000001 0.001952 0.498303 0.499744 19 0.001232 0.000001 0.506612 0.492155 Тогда я хочу, чтобы получить среднее значение этих двух dataframes. Что это самый простой способ сделать это? Просто чтобы прояснить, я хочу, чтобы получить среднее значение для каждой конкретной ячейки, когда индексы и столбцы всех dataframes точно так же. Таким образом, в примере, который я дал, в среднем по [0,
TimRich
2

голосов
1

ответ
1.9k

Просмотры

Удалить пробелы из Matplotlib heatplot

У меня есть heatplot в Matplotlib, для которого я хочу удалить пробел к северу и востоку от участка, как показано на рисунке ниже. Вот код я использую для создания графики: # черчения figsize = (50,20) у, х = 1,2 инжир, axarry = plt.subplots (у, х, figsize = figsize) р = axarry [1 ] .pcolormesh (copy_matrix.values) # положить основные клещей в середине каждой ячейки axarry [1] .set_xticks (np.arange (copy_matrix.shape [1]) + 0,5, незначительные = False) axarry [1] .set_yticks (np.arange (copy_matrix.shape [0]) + 0,5, минорный = False) axarry [1] .set_title (имя_файла, FontWeight = 'жирным шрифтом') axarry [1] .set_xticklabels (copy_matrix.columns, вращение = 90) axarry [1] .set_yticklabels (copy_matrix.index) fig.colorbar (р, ах = axarry [1]) Phylo.draw (дерево, осей = axarry [0])
TimRich
2

голосов
3

ответ
2.8k

Просмотры

Python Multiprocessing.Process, как повторно использовать процесс?

Я использую модуль Python многопроцессорной для запуска некоторых длительных задач параллельно. Я использую метод запуска () для выполнения задания, но как только рабочие места, вернулись, я хотел бы, чтобы запустить их снова. Можно ли повторно использовать процесс я создаю? или я должен создать новый объект процесса каждый раз, когда я хочу, чтобы выполнить задание? Существует этот раздел из pyhton документации предполагая я не могу использовать метод запуска () более onece, но, возможно, кто-то знает еще один способ повторного использования экземпляра: начать () Начало активности процесса. Это должно быть названо более одного раза для каждого объекта процесса. Он организует метод объекта запуска (), которая вызывается в отдельном процессе. Это моя версия класса Process: класс Process (multiprocessing.Process): Защита __init __ (я, result_queue, MCMCinstance) утверждает isinstance (MCMCinstance,
TimRich
13

голосов
1

ответ
2.4k

Просмотры

Почему cffi так гораздо быстрее, чем NumPy?

Я играл вокруг с написанием cffi модулей в Python, и их скорость заставляет меня задаться вопросом, если я использую стандартный питон правильно. Это заставляет меня хотеть, чтобы переключиться на C полностью! Правдиво есть некоторые большие библиотеки Python я никогда не мог переописать себя в C, так что это более гипотетический, чем что-либо на самом деле. Этот пример показывает функцию суммы в питоне которая используется с Numpy массивом, и как медленно она по сравнению с функцией переменного тока. Есть ли более быстрый вещий способ вычисления суммы Numpy массива? Защиту cast_matrix (матрица, FFI): ар = ffi.new ( "двойной * [% d]" % (matrix.shape [0])) PTR = ffi.cast ( "двойной *", matrix.ctypes.data) для я в диапазоне (matrix.shape [0]): ар [I] = PTR + I * matrix.shape [1] возвращение ар = FFI FFI () FFI.
TimRich
1

голосов
3

ответ
1.3k

Просмотры

Преобразование смеси гауссовых в PyMC3

Я пытаюсь научиться PyMC3, я хочу, чтобы сделать простую смесь примера гауссианов. Я нашел этот пример и хочу, чтобы преобразовать его в pymc3, но я в настоящее время получаю сообщение об ошибке при попытке построить traceplot. n1 = n2 = 500 200 N = n1 + n2 = 21,8 mean1 mean2 = 42,0 Точность = 0,1 сигма = np.sqrt (1 / точность) # точность = 1/2 ^ сигма печати "sigma1:% S" % sigma1 печати «сигма2 :% s»% сигма2 data1 = np.random.normal (mean1, сигма, n1) = data2 np.random.normal (mean2, сигма, п2) данных = np.concatenate ([data1, data2]) # np.random .shuffle (данные) рис = plt.figure (figsize = (7, 7)) ах = fig.add_subplot (111, xlabel = 'х', ylabel = 'у', название = 'смесь 2 guassians') ах. участок (диапазон (0, n1 + n2), данные, 'х', метка = 'данные') plt.legend (LOC = 0) с pm.Model () в качестве модели: #priors р = pm.Uniform ( «р " , 0, 1) # Это фракция, которые приходят из mean1 против mean2 бер = pm.Bernoulli ( «бер», р = р) # 1 производит с пропорции р. Точность = pm.Gamma ( 'точность', альфа = 0,1, бета = 0,1) mean1 = pm.Normal ( "mean1", 0, 0.01) #better использовать нормалей в сравнении Униформа (если вы не уверены, значение усекается при 0 и 200 mean2 = pm.Normal ( "mean2", 0, 0.01) среднее значение = pm.Deterministic процесса = pm.Normal ( 'процесс' ( 'средний', бер * mean1 + (1-бер) * mean2), мю = значит, тау = точность, наблюдаемый = шаг данных) # умозаключение = pm.Metropolis () след = pm.sample (10000, стадия) pm.traceplot (трассировки) Ошибка: sigma1: +3,16227766017 сигма2: +1,69030850946 [------ ----------- 100% -----------------] 10000 10000 в комплекте 4.
TimRich
4

голосов
1

ответ
1.3k

Просмотры

Удалить границу из Matplotlib pcolor

Как я могу удалить белую рамку вокруг верхней и правой части этого участка? это код, я использую, чтобы построить свою панд DataFrame: plt.pcolor (дифф, clip_on = False) # дифф является DataFrame plt.yticks (np.arange (0.5, длина (diff.index), 1), дифф .index) plt.xticks (np.arange (0,5, LEN (diff.columns), 1), diff.columns, вращение = 90) plt.colorbar ()
TimRich
4

голосов
1

ответ
6.5k

Просмотры

Python Scrapy учебник KeyError: «Паук не найдено:

Я пытаюсь написать свой первый Scrapy паук, Ive был после учебника на http://doc.scrapy.org/en/latest/intro/tutorial.html Но я получаю сообщение об ошибке «исключение KeyError:«Паук не найден : "Я думаю , что я бегу команды из правильного каталога (тот , с файлом scrapy.cfg) (proscraper) # (10/14 / 14 @ 2:06 вечера) ( тим @ локальный ): ~ / Workspace / Разработка / хаки / PROSUM-скребок / SCRAPY дерево. ├── SCRAPY │ ├── __init__.py │ ├── items.py │ ├── pipelines.py │ ├── settings.py │ └── пауки │ ├── __init__.py │ └── juno_spider. ру └── scrapy.cfg 2 каталоги, 7 файлов (proscraper) # (10/14/ 14 @ 2:13 вечера) ( тим @ локальный): ~ / Workspace / Разработка / хаки / PROSUM-скребок / SCRAPY Ls SCRAPY scrapy.cfg Здесь ошибка я получаю (proscraper) # (10/14 / 14 @ 2:13 вечера) ( тим @ локальный): ~ / Workspace / Разработка / хаки / PROSUM-скребок / SCRAPY SCRAPY ползать Юнона /home/tim/.virtualenvs/proscraper/lib/python2.7/site-packages/twisted/internet/_sslverify.py:184: UserWarning: у вас не установлен модуль service_identity. Пожалуйста, установите его с. Без service_identity модуля и достаточно недавно pyOpenSSL tosupport его, Twisted может выполнять только элементарную клиента hostnameverification TLS. Многие действующие отображения сертификата / имя хоста может быть отклонено. verifyHostname, VerificationError = _selectVerifyImplementation () Traceback (самый последний вызов последнего): Файл "/home/tim/.virtualenvs/proscraper/bin/scrapy", строка 9, в load_entry_point ( 'Scrapy == 0.24.4', 'console_scripts' , 'SCRAPY') () Файл "/home/tim/.virtualenvs/proscraper/lib/python2.7/site-packages/scrapy/cmdline.py", строка 143,14 @ 2:13 вечера) ( тим @ локальный хост ): ~ / Workspace / развитие / хаки / PROSUM-скребок / SCRAPY ГПГА , замораживать Scrapy == 0.24.4 Twisted == 14.0.2 cffi == 0.8.6 криптографии == 0,6 cssselect == 0.9.1 IPDB == 0,8 IPython == 2.3.0 LXML == 3.4.0 pyOpenSSL == 0,14 pycparser == 2.10 queuelib == 1.2.2 шесть == 1.8.0 w3lib == 1.10.0 wsgiref == 0.1.2 zope.interface == 4.1.1 Вот код для моего паука т - я атрибута имени залитого: (proscraper) # (10/14/ 14 @ 2:14 вечера) ( тим @ локальный ): ~ / Workspace / Разработка / хаки / PROSUM-скребок / SCRAPY кот SCRAPY / пауки / juno_spider.py класса импорта SCRAPY JunoSpider (scrapy.Spider): имя = "Юнона" allowed_domains = [ "HTTP: //www.juno. co.uk/ "] start_urls = [ "http://www.juno.co.uk/dj-equipment/"] Защита разбор (я, ответ): имя_файл = response.url.split (" / ") [- 2] с открытым (именем файла, 'термометр'), как F: f.write (response.body)
TimRich