如何在NumPy数组中的特定列上乘以标量? [英] How to multiply a scalar throughout a specific column within a NumPy array?
问题描述
我需要对水文地质学现场工作的大型数据集进行一些分析.我正在使用NumPy.我想知道我该怎么做:
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:
-
乘以我的数组的第二列以数字表示(例如5.2).然后
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.
推荐答案
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
仅需要一些简单的规则即可在NumPy中进行元素选择(索引):
just a few simple rules are required to grok element selection (indexing) in NumPy:
-
NumPy和Python一样,都是基于0的,因此例如下面的"1"是指第二列
NumPy, like Python, is 0-based, so eg, the "1" below refers to the second column
用逗号分隔括号内的尺寸,因此[行,列],例如A [2,3]表示第三行第四列的项目(单元格")
commas separate the dimensions inside the brackets, so [rows, columns], eg, A[2,3] means the item ("cell") at row three, column four
冒号表示该维度上所有元素的全部,例如A [:,1]创建A的第2列的视图; A [3 ,:]指向第四行
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
这篇关于如何在NumPy数组中的特定列上乘以标量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!