I need to do some analysis on a large dataset from a hydrolgeology field work. I am using NumPy. I want to know how I can:
multiply e.g. the 2nd column of my array by a number (e.g. 5.2). And then
calculate the cumulative sum of the numbers in that column.
As I mentioned I only want to work on a specific column and not the whole array.
multiply() technique will be used to do the element-wise multiplication of matrices in Python. The NumPy library's np. multiply(x1, x2) method receives two matrices as input and executes element-wise multiplication over them before returning the resultant matrix. We must send the two matrices as input to the np.
multiply() in Python. numpy. multiply() function is used when we want to compute the multiplication of two array. It returns the product of arr1 and arr2, element-wise.
you can do this in two simple steps using NumPy:
>>> # multiply column 2 of the 2D array, A, by 5.2
>>> A[:,1] *= 5.2
>>> # assuming by 'cumulative sum' you meant the 'reduced' sum:
>>> A[:,1].sum()
>>> # if in fact you want the cumulative sum (ie, returns a new column)
>>> # then do this for the second step instead:
>>> NP.cumsum(A[:,1])
with some mocked data:
>>> A = NP.random.rand(8, 5)
>>> A
array([[ 0.893, 0.824, 0.438, 0.284, 0.892],
[ 0.534, 0.11 , 0.409, 0.555, 0.96 ],
[ 0.671, 0.817, 0.636, 0.522, 0.867],
[ 0.752, 0.688, 0.142, 0.793, 0.716],
[ 0.276, 0.818, 0.904, 0.767, 0.443],
[ 0.57 , 0.159, 0.144, 0.439, 0.747],
[ 0.705, 0.793, 0.575, 0.507, 0.956],
[ 0.322, 0.713, 0.963, 0.037, 0.509]])
>>> A[:,1] *= 5.2
>>> A
array([[ 0.893, 4.287, 0.438, 0.284, 0.892],
[ 0.534, 0.571, 0.409, 0.555, 0.96 ],
[ 0.671, 4.25 , 0.636, 0.522, 0.867],
[ 0.752, 3.576, 0.142, 0.793, 0.716],
[ 0.276, 4.255, 0.904, 0.767, 0.443],
[ 0.57 , 0.827, 0.144, 0.439, 0.747],
[ 0.705, 4.122, 0.575, 0.507, 0.956],
[ 0.322, 3.71 , 0.963, 0.037, 0.509]])
>>> A[:,1].sum()
25.596156138451427
just a few simple rules are required to grok element selection (indexing) in NumPy:
NumPy, like Python, is 0-based, so eg, the "1" below refers to the second column
commas separate the dimensions inside the brackets, so [rows, columns], eg, A[2,3] means the item ("cell") at row three, column four
a colon means all of the elements along that dimension, eg, A[:,1] creates a view of A's column 2; A[3,:] refers to the fourth row
Sure:
import numpy as np
# Let a be some 2d array; here we just use dummy data
# to illustrate the method
a = np.ones((10,5))
# Multiply just the 2nd column by 5.2 in-place
a[:,1] *= 5.2
# Now get the cumulative sum of just that column
csum = np.cumsum(a[:,1])
If you don't want to do this in-place you would need a slightly different strategy:
b = 5.2*a[:,1]
csum = np.cumsum(b)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With