Вот еще один способ сделать это:
In [183]: df.stack().groupby(level=0).first().reindex(df.index)
Out[183]:
0 1
1 3
2 4
3 NaN
dtype: float64
Идея здесь заключается в использовании stack
для перемещения столбцов в уровень индекса строки:
In [184]: df.stack()
Out[184]:
0 A 1
C 2
1 B 3
2 B 4
C 5
dtype: float64
Теперь, если вы группируете по первому уровню строки, то есть исходному индексу, и принимаете первое значение из каждой группы, вы, по существу, получаете желаемый результат:
In [185]: df.stack().groupby(level=0).first()
Out[185]:
0 1
1 3
2 4
dtype: float64
Все, что нам нужно для этого нужно повторно проиндексировать результат (используя исходный индекс), чтобы включить строки, которые полностью NaN:
df.stack().groupby(level=0).first().reindex(df.index)
Нет, использование CUDA не является тривиальным вопросом.
модель программирования CUDA в основном использует C (с некоторыми дополнениями), но для получения большинства возможностей GPGPU, необходимо было бы удостовериться, чтобы алгоритмы следовали инструкциям CUDA. (см. Nvidia Руководство по программированию CUDA )
, Например, для получения лучшей производительности памяти (где-нибудь приблизительно 70 Гбит/с) необходимо получить доступ к памяти в потоковом режиме с объединением, также ответвления являются очень дорогостоящими на GPU, таким образом, необходимо избежать условных выражений как можно больше. Проверьте руководство и образцы, которым предоставляют SDK, они обеспечат превосходную начальную точку
Мне бы хотелось сказать Вам, как сделать это с Erlang...;-), но по крайней мере, Satnam Singh при Исследовании MS сделал некоторую очень интересную работу с Haskell (Лава) и F#. Возможно, данная статья может дать Вам некоторую интуицию для того, как это могло быть сделанным: