Где именно указатели на функции указывают?

Я не уверен в механике, но это работает. Обратите внимание, что возвращаемое значение - это просто ndarray. Я думаю, что вы можете применить любую кумулятивную или «скользящую» функцию таким образом, и она должна иметь тот же результат.

Я протестировал ее с помощью cumprod, cummax и cummin, и все они вернулись ndarray. Я думаю, что панды достаточно умны, чтобы знать, что эти функции возвращают серию, и поэтому функция применяется как преобразование, а не агрегация.

In [35]: df.groupby('id')['x'].cumsum()
Out[35]:
0     0
1     1
2     3
3     3
4     7
5    12

Редактирование: мне было любопытно, что этот синтаксис возвращает Серия:

In [54]: df.groupby('id')['x'].transform('cumsum')
Out[54]:
0     0
1     1
2     3
3     3
4     7
5    12
Name: x
13
задан Andrew Grant 19 March 2009 в 00:47
поделиться

4 ответа

Указатель функции также указывает в память, единственная разница - то, что существует исполняемый код в той ячейке памяти вместо данных.

На многих платформах, при попытке выполнить данные (например, регулярная память) Вы разрушите или вызовете исключение. Это известно как Предотвращение Выполнения Данных - меры безопасности для предотвращения приложений, непреднамеренно выполняющих изворотливый код, который может быть помещен туда вредоносным программным обеспечением.

29
ответ дан Andrew Grant 19 March 2009 в 10:47
поделиться

Это - указатель кода. Это указывает на адрес функции. Это по существу, как Вы описали. И да, если у Вас будут указатели, которые не указывают на то, что Вы ожидаете, то у Вас будут проблемы.

4
ответ дан BobbyShaftoe 19 March 2009 в 10:47
поделиться

Хорошо я не уверен, но полагая, что функции являются инструкциями (ADD, SUB, JMP) и что у каждого из них есть шестнадцатеричные значения, я полагаю, что Вы не изменили бы функцию, но только инструкцию JMP ()...

-3
ответ дан Diones 19 March 2009 в 10:47
поделиться

Указатели функции указывают на адрес функции в памяти.

На основе пути указатели функции обычно присваиваются, я был бы удивлен, были ли у Вас они указывающий на местоположение данных. Они обычно не бросаются и поэтому вряд ли указать где угодно кроме на допустимую функцию. Если Вы бросаете их много, то это могло быть проблемой. Более вероятно, хотя то, что данные, Вы являетесь передающими к функции, являются неправильными.

2
ответ дан Steve Rowe 19 March 2009 в 10:47
поделиться