Есть ли в пространстве имен winrt консольные функции?

Вы можете использовать numpy.mgrid и обменивать его оси:

>>> # assuming a 3x3 array
>>> np.mgrid[:3, :3].swapaxes(-1, 0)
array([[[0, 0],
        [1, 0],
        [2, 0]],

       [[0, 1],
        [1, 1],
        [2, 1]],

       [[0, 2],
        [1, 2],
        [2, 2]]])

Это все еще немного отличается от вашего желаемого массива, поэтому вы можете катить свои оси:

>>> np.mgrid[:3, :3].swapaxes(2, 0).swapaxes(0, 1)
array([[[0, 0],
        [0, 1],
        [0, 2]],

       [[1, 0],
        [1, 1],
        [1, 2]],

       [[2, 0],
        [2, 1],
        [2, 2]]])

Учитывая, что кто-то приурочил результаты, я также хочу представить версию на основе , которая «бьет все»:

import numba as nb
import numpy as np

@nb.njit
def _indexarr(a, b, out):
    for i in range(a):
        for j in range(b):
            out[i, j, 0] = i
            out[i, j, 1] = j
    return out

def indexarr(a, b):
    arr = np.empty([a, b, 2], dtype=int)
    return _indexarr(a, b, arr)

Сроки:

a, b = 400, 500
indexarr(a, b)  # numba needs a warmup run
%timeit indexarr(a, b)                                  # 1000 loops, best of 3: 1.5 ms per loop
%timeit np.mgrid[:a, :b].swapaxes(2, 0).swapaxes(0, 1)  # 100 loops, best of 3: 7.17 ms per loop
%timeit np.mgrid[:a, :b].transpose(1,2,0)               # 100 loops, best of 3: 7.47 ms per loop
%timeit create_grid(a, b)                               # 100 loops, best of 3: 2.26 ms per loop

и на меньшем массиве:

a, b = 4, 5
indexarr(a, b)
%timeit indexarr(a, b)                                 # 100000 loops, best of 3: 13 µs per loop
%timeit np.mgrid[:a, :b].swapaxes(2, 0).swapaxes(0, 1) # 10000 loops, best of 3: 181 µs per loop
%timeit np.mgrid[:a, :b].transpose(1,2,0)              # 10000 loops, best of 3: 182 µs per loop
%timeit create_grid(a, b)                              # 10000 loops, best of 3: 32.3 µs per loop

Как и было обещано, он «бьет все» с точки зрения производительности: -)

0
задан Francesco Boi 25 March 2019 в 17:10
поделиться

2 ответа

У UWP есть три «модели приложения»:

  • Приложение XAML с выделением кода C # или C ++
  • Приложение Direct3D
  • Приложение Direct3D + XAML

В UWP нет поддержки «консольных окон».

Я «подделал» текстовую консоль для тестовых приложений и примеров UWP, используя модель приложения Direct3D (см. directx-vs-templates для основного цикла рендеринга), DirectX Набор инструментов и моя утилита TextConsole .

0
ответ дан Chuck Walbourn 25 March 2019 в 17:10
поделиться

Вы можете вызывать большинство API-интерфейсов Windows Runtime из любых консольных приложений win32, а также из упакованных консольных приложений (относительно новая функция), но в настоящее время нет API-интерфейсов Windows Runtime, обеспечивающих управление консолью или специфичным для консоли поведением. [ 110]

Спасибо,

Бен (MSFT)

0
ответ дан Ben Kuhn 25 March 2019 в 17:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: