This method is slow because it uses two nested Apply To Each loops, but because your numbers are not all nicely broken up by spaces we need to evaluate each "word" and then each character in each "word". Note that you need to set Concurrency Control for each loop to 0.
 
Here's an overview of the flow:
 
First, we start with variable declarations:
The only one that needs explanation is strBlank, which is a blank string used to reset strTemp inside of the first loop.
 
Next we move into the first loop:
The expression that the loops runs from breaks the original string at the space characters to get each "word" as an array item:
split(variables('strInputString'),' ')
 
Next we have the Select action which breaks up the current "word" into an array of individual characters by value and index, and reset strTemp:
Select From:
range(0, length(chunk(items('Apply_to_each'),1)))
Select Map:
{
  "Value": @{chunk(items('Apply_to_each'),1)?[item()]},
  "Position": @{item()}
}
 
Then we have the second nested loop with only one action in it. This loops through each character, checks if it's a number or a period, and if so it appends it to strTemp. The loop runs on the output of the Select action. After the second loop, we use an Append To Array action that checks if the value of strTemp is greater than 0 and if it is (and is not just a period), add it to our results array. If not, add a blank value.
Expression in the Append To String action:
if(isint(items('Apply_to_each_2')['Value']),items('Apply_to_each_2')['Value'],if(equals(items('Apply_to_each_2')['Value'],'.'),'.',''))
Expression in the Append To Array action:
if(equals(variables('strTemp'),'.'),'',if(greater(length(variables('strTemp')),0),float(variables('strTemp')),''))
 
Then we use a Filter Array action to remove the blanks:
Leave the right side blank
 
 
Finally, we get the desired result:
 
This isn't fast (it takes about 17 seconds to run) but it does accomplish your goal.