(Пожалуйста, прочитайте // {comment here}
и просто сравните этот код с вашим, чтобы узнать, что изменилось.)
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 10,
'paged' => $paged,
//'prev_next' => true,
);
// Note that I'm not overriding the global `$wp_query`.
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
$counter = 0;
$is_paged = $my_query->is_paged;
$new_row = true;
while ($my_query->have_posts()) {
$my_query->the_post();
//echo $counter
?>
<?php if ( ! $is_paged && 0 === $counter ) { ?>
<div class="row">
<div class="col-12">
====== Post #<?php echo $counter + 1; ?>; ID: <?php the_ID(); ?> =====
<h3><?php the_title(); ?></h3>
</div>
</div>
<?php } else { ?>
<?php if($new_row) { ?>
<div class="row">
<?php } ?>
<div class="col-md-4 news-grid__article">
===== Post #<?php echo $counter + 1; ?>; ID: <?php the_ID(); ?> =====
<h4><?php the_title(); ?></h4>
</div>
<?php //$counter++;
if(
( ! $is_paged && $counter % 3 === 0 ) || // every 3rd post on page #1
( $is_paged && $counter % 3 === 2 ) || // every 3rd post on page #2, #3, etc.
( $counter === $my_query->post_count - 1 ) // the last post
) { ?>
</div>
<div class="clearfix"></div>
<?php $new_row = true;
} else {
$new_row = false;
} ?>
<?php } $counter++; ?>
<?php } } ?>
<div class="news-pagination">
<?php
echo paginate_links( array(
'prev_next' => true,
// Here's how you can make `paginate_links()` works without having
// to override the `WP_Query` global instance (i.e. `$wp_query`).
'total' => $my_query->max_num_pages,
'current' => $my_query->get( 'paged' ),
) );
?>
</div>
a: 3 4 # до 12 // Инициализировать матрицу в соответствии с приведенной выше логикой
b: 3 4 # 12? 10 // Инициализировать матрицу b в соответствии с приведенной выше логикой
@ ' [а; т; :; b @ 't: где каждый a> 5] // Основано на приведенной выше логике
Эквивалентные операции KDB для ваших команд упомянуты ниже.
ПРИМЕЧАНИЕ: Обратите внимание, что эти функции KDB и numpy не полностью эквивалентны. Они ведут себя одинаково только для определенных условий ввода. Подробно прочитайте поведение функций KDB, потому что они сильно перегружены. Я предоставил ссылки внизу для операторов kdb, используемых здесь.
[одна тысяча сто тридцать одна] 1. a = np.arange (12) .reshape (3,4)
Эквивалентом numpy 'arange' с одним входом в KDB является оператор 'til'. Оператор изменения формы в KDB - «#».
Эквивалентная команда KDB для этого будет:
q) a:2 4 #til 12
2. b = np.random.randint (10, size = (3, 4))
'?' Оператор в KDB дает случайные значения. Он не поддерживает размер, но этого легко достичь с помощью оператора формы.
q) 2? 4 / output 1 3 (2 random values)
q) 3 4# 12?10
Или мы могли бы сделать для этого общую функцию:
q) {(y;z )#?[y*z;x]} [8 ;3 ;4]
3. a [np.where (cond)] = b [np.where (cond)]
Существуют разные способы сделать это в KDB. Это зависит от размера вашего списка, какое решение использовать. Некоторые из них будут работать лучше в небольшом списке, а некоторые - лучше в большом списке. Так что протестируйте их в соответствии с вашим проектом.
Все три решения, упомянутые ниже, дадут вам желаемый результат.
q) a: 3 4#til 12;
q) b: (3 6 9 5;4 2 1 3;6 9 3 5)
q) a:(a*not i)+b*i:a>5 /solution 1
Используя @ и каждый-оба
q) a:{@[x;y;:;z]}'[a;i;b@'i: where each a > 5] / solution 2
q) a:@'[a;i;:;b@'i: where each a > 5] /short form
Или измените исходный массив на месте, используя оператор точки (.):
q) l:(til count a),'enlist each where@'a>5
q) {.[`a;x;:;y]}'[l;b ./:l] /solution 3
q) .'[`a;l;:;b ./:l] short form
Подробнее здесь: [1124 ]
https://code.kx.com/q/ref/card/
https://code.kx.com/q/ref/arith -integer / # til
https://code.kx.com/q/ref/unclassified/#apply
https: / /code.kx.com/q/ref/select/#index-at
https://code.kx.com/q/ref/random/#roll [тысяча сто двадцать девять]