Йорик (язык программирования)
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Разработано | Дэвид Х. Манро |
---|---|
Впервые появился | 1996 год |
Стабильная версия | 2.2.04
/ Май 2015 г |
ТЫ | Unix-подобные системы, включая macOS , Microsoft Windows |
Лицензия | БСД |
Расширения имен файлов | .я |
Веб-сайт | github |
Yorick — это интерпретируемый язык программирования , предназначенный для числовых вычислений , построения графиков и управления большими кодами научного моделирования. Он довольно быстр благодаря синтаксису массива и расширяется с помощью подпрограмм C или Fortran . Он был создан в 1996 году Дэвидом Х. Манро из Ливерморской национальной лаборатории Лоуренса .
Особенности [ править ]
Индексация [ править ]
Йорик хорошо умеет манипулировать элементами N-мерных массивов благодаря своему мощному синтаксису.
Доступ к нескольким элементам возможен одновременно:
> x=[1,2,3,4,5,6];
> x
[1,2,3,4,5,6]
> x(3:6)
[3,4,5,6]
> x(3:6:2)
[3,5]
> x(6:3:-2)
[6,4]
- Произвольные элементы
> x=[[1,2,3],[4,5,6]]
> x
[[1,2,3],[4,5,6]]
> x([2,1],[1,2])
[[2,1],[5,4]]
> list=where(1<x)
> list
[2,3,4,5,6]
> y=x(list)
> y
[2,3,4,5,6]
- Псевдоиндекс
Подобно «заголовку» в PDL и «вещанию» в Numpy , у Йорика есть механизм для этого:
> x=[1,2,3]
> x
[1,2,3]
> y=[[1,2,3],[4,5,6]]
> y
[[1,2,3],[4,5,6]]
> y(-,)
[[[1],[2],[3]],[[4],[5],[6]]]
> x(-,)
[[1],[2],[3]]
> x(,-)
[[1,2,3]]
> x(,-)/y
[[1,1,1],[0,0,0]]
> y=[[1.,2,3],[4,5,6]]
> x(,-)/y
[[1,1,1],[0.25,0.4,0.5]]
- Резиновый индекс
«..» — это резиновый индекс, обозначающий ноль или более измерений массива.
> x=[[1,2,3],[4,5,6]]
> x
[[1,2,3],[4,5,6]]
> x(..,1)
[1,2,3]
> x(1,..)
[1,4]
> x(2,..,2)
5
«*» — это своего рода резиновый индекс для преобразования фрагмента (подмассива) массива в вектор.
> x(*)
[1,2,3,4,5,6]
- Тензорное умножение
Тензорное умножение в Йорике выполняется следующим образом:
P(,+, )*Q(, +)
означает
> x=[[1,2,3],[4,5,6]]
> x
[[1,2,3],[4,5,6]]
> y=[[7,8],[9,10],[11,12]]
> x(,+)*y(+,)
[[39,54,69],[49,68,87],[59,82,105]]
> x(+,)*y(,+)
[[58,139],[64,154]]