### 修改NumPy数组的特定行/列

#### [英]Modify a particular row/column of a NumPy array

How do I modify particular a row or column of a NumPy array?

For example I have a NumPy array as follows:

``````P = array([[1, 2, 3],
[4, 5, 6]])
``````

How do I change the elements of first row, `[1, 2, 3]`, to `[7, 8, 9]` so that the `P` will become:

``````P = array([[7, 8, 9],
[4, 5, 6]])
``````

Similarly, how do I change first column values, `[2, 5]`, to `[7, 8]`?

``````P = array([[1, 7, 3],
[4, 8, 6]])
``````

## 2 个解决方案

### #1

21

Rows and columns of NumPy arrays can be selected or modified using the square-bracket indexing notation in Python.

To select a row in a 2D array, use `P[i]`. For example, `P[0]` will return the first row of `P`.

To select a column, use `P[:, i]`. The `:` essentially means "select all rows". For example, `P[:, 1]` will select all rows from the second column of `P`.

If you want to change the values of a row or column of an array, you can assign it to a new list (or array) of values of the same length.

To change the values in the first row, write:

``````>>> P[0] = [7, 8, 9]
>>> P
array([[7, 8, 9],
[4, 5, 6]])
``````

To change the values in the second column, write:

``````>>> P[:, 1] = [7, 8]
>>> P
array([[1, 7, 3],
[4, 8, 6]])
``````

### #2

1

In a similar way if you want to select only two last columns for example but all rows you can use:

``````print P[:,1:3]
``````