in reply to PDL slice 2D array

It may be a homework, but looks like what you are after is called binning.

use strict; use warnings; use PDL; use PDL::NDBin; my $tick_data = [ [ 0, 100.5, 200], [15, 101.0, 150], [30, 100.8, 100], [45, 101.2, 300], [60, 101.0, 250], ]; my ( $time, $price, $volume ) = dog transpose pdl $tick_data; my $binner = PDL::NDBin-> new( axes => [[ 'time', step => 20 ]], vars => [ [ open => sub { shift-> selection-> at( 0 )}], [ close => sub { shift-> selection-> at( -1 )}], [ low => 'Min' ], [ high => 'Max' ], [ volume => 'Sum' ], ] ); $binner-> process( time => $time, low => $price, high => $price, open => $price, close => $price, volume => $volume, ); my $result = $binner-> output; print "OHLCV Format (Open, High, Low, Close, Volume):\n"; print transpose cat @{ $result }{ qw/ open high low close volume /}; __END__ OHLCV Format (Open, High, Low, Close, Volume): [ [100.5 101 100.5 101 350] [100.8 100.8 100.8 100.8 100] [101.2 101.2 101 101 550] ]

Replies are listed 'Best First'.
Re^2: PDL slice 2D array
by paul92 (Initiate) on Jan 19, 2025 at 16:10 UTC

    Great by manipulating timestamp and step I should be able to make X second bar charts, daily, weekly and monthly charts thank you very much!