PyPI package with some better syntax tools for python
pip install truefalsepython
For True and False values there are equal constants (like it is in C-like languages or R) TRUE, T, true and FALSE, F, false; for None there is NULL constant:
from truefalsepython import TRUE, FALSE, T, F, true, false, NULL
print(True == T) # True
print(True == TRUE) # True
print(True == true) # True
print(False == F) # True
print(False == FALSE) # True
print(False == false) # True
print(NULL) # Noneis_odd(number)is_even(number)is_number(object)max_fast(a, b)min_fast(a, b)
fast_sample(objects, probs)-- returns 1 random object fromobjectswithprobsprobabilities. It's faster thannp.random.choice(objects, 1, probs)(example)randomTrue(prob = 0.5)-- returnsTruewith probabilityprob, otherwiseFalse
Useful for debug:
set_trace()-- like breakpointdebug(function, *args, **kwargs)-- for debugfunctionfunction with those arguments
For arrays there are several R-like functions:
ifelse— just wrapper ofnumpy.wherenrow— returns number of rowsncol— returns number of columnscolMeans— returns average for each columnrowMeans— returns average for each rowcolSums— returns sums for each columnrowSums— returns sums for each rowapply— applies functionFUNto dimension ofarr2Darray (for rows ifMARGIN == 1and columns ifMARGIN == 2)lapply— applies functionfuncfor each element inarray(array/list or something else)sapply— likelapplybut returns numpy arraysample— it isnp.random.choicebutreplace = Falseby defaultsample_int— sample numbers from0ton-1
Example of usage:
import numpy as np
from truefalsepython import nrow, ncol, colMeans, rowMeans, colSums, rowSums, apply, lapply, sapply, sample, sample_int
np.random.seed(1)
# some 2D array
random_matrix = np.random.randint(8, size = (5, 3))
# how to get rows and cols counts
print(nrow(random_matrix)) # 5
print(ncol(random_matrix)) # 3
# operations for each row/column
print(rowMeans(random_matrix))
# [4. 2.66666667 5. 0.33333333 5.33333333]
print(colMeans(random_matrix))
# [2.4 4.4 3.6]
print(rowSums(random_matrix))
# [12 8 15 1 16]
print(colSums(random_matrix))
# [12 22 18]
# apply function (MARGIN is 1 for rows and 2 for columns)
print(apply(random_matrix, MARGIN = 1, FUN = np.min))
# [3 0 3 0 4]
# as u can see, it's not necessary to use FUN returns only 1 number by vector
print(apply(random_matrix, MARGIN = 2, FUN = np.sqrt))
#[[2.23606798 0. 1.73205081 0. 2. ]
# [1.73205081 2.64575131 2.23606798 0. 2.64575131]
# [2. 1. 2.64575131 1. 2.23606798]]
some_arr = np.array([1, 2, 3, 5, 4, 3, 2])
# returns list
print(lapply(some_arr, lambda x: -x))
# [-1, -2, -3, -5, -4, -3, -2]
# returns numpy array
print(sapply(some_arr, lambda x: -x))
# [-1 -2 -3 -5 -4 -3 -2]
# like np.random.choice but replace = False by default
print(sample(some_arr, 4))
# [5 3 2 1]
# sample numbers from 0 to n-1
print(sample_int(n = 100, size = 10))
# [69 46 58 12 73 98 31 53 65 96]time_to_seconds(days = 0, hours = 0, minutes = 0, seconds = 5)-- converts time to seconds