Как умножить скаляр на весь столбец в массиве NumPy? - PullRequest
20 голосов
/ 22 сентября 2011

Мне нужно провести анализ большого набора данных из полевых работ по гидрологии.Я использую NumPy.Я хочу знать, как я могу:

  1. умножить, например, 2-й столбец моего массива на число (например, 5.2).А затем

  2. вычислите совокупную сумму чисел в этом столбце.

Как я уже говорил, я хочу работать только с конкретным столбцом, а не со всем массивом.

Ответы [ 2 ]

27 голосов
/ 22 сентября 2011
 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])

с некоторыми ложными данными:

>>> 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:

  • NumPy, как и Python, основывается на 0, поэтому, например, «1» ниже относится ко второму столбцу

  • запятые разделяют размеры внутри скобок, поэтому [строки, столбцы], например, A [2,3] означает элемент («ячейка») в третьей строке, четвертый столбец

  • двоеточие означает все изэлементы вдоль этого измерения, например, A [:, 1] создают представление столбца 2 A;[3 ,:] относится к четвертому ряду

5 голосов
/ 22 сентября 2011

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])

Если вы не хотите делать это на месте, вам потребуется немного другая стратегия:

b = 5.2*a[:,1]
csum = np.cumsum(b)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...