# NumPy数组迭代实例详解

## 本文概述

NumPy提供了一个迭代器对象, 即nditer, 可以使用python标准的Iterator接口在给定数组上进行迭代。

### 例子

``````import numpy as np
a = np.array([[1, 2, 3, 4], [2, 4, 5, 6], [10, 20, 39, 3]])
print("Printing array:")
print(a);
print("Iterating over the array:")
for x in np.nditer(a):
print(x, end=' ')``````

``````Printing array:
[[ 1  2  3  4]
[ 2  4  5  6]
[10 20 39  3]]
Iterating over the array:
1 2 3 4 2 4 5 6 10 20 39 3``````

### 例子

``````import numpy as np
a = np.array([[1, 2, 3, 4], [2, 4, 5, 6], [10, 20, 39, 3]])
print("Printing the array:")
print(a)
print("Printing the transpose of the array:")
at = a.T
print(at)

#this will be same as previous
for x in np.nditer(at):
print(print("Iterating over the array:")
for x in np.nditer(a):
print(x, end=' ')``````

``````Printing the array:
[[ 1  2  3  4]
[ 2  4  5  6]
[10 20 39  3]]
Printing the transpose of the array:
[[ 1  2 10]
[ 2  4 20]
[ 3  5 39]
[ 4  6  3]]
1 2 3 4 2 4 5 6 10 20 39 3``````

## 迭代顺序

1. F风格订单
2. C风格订单

### 例子

``````import numpy as np

a = np.array([[1, 2, 3, 4], [2, 4, 5, 6], [10, 20, 39, 3]])

print("\nPrinting the array:\n")

print(a)

print("\nPrinting the transpose of the array:\n")
at = a.T

print(at)

print("\nIterating over the transposed array\n")

for x in np.nditer(at):
print(x, end= ' ')

print("\nSorting the transposed array in C-style:\n")

c = at.copy(order = 'C')

print(c)

print("\nIterating over the C-style array:\n")
for x in np.nditer(c):
print(x, end=' ')

d = at.copy(order = 'F')

print(d)
print("Iterating over the F-style array:\n")
for x in np.nditer(d):
print(x, end=' ')``````

``````Printing the array:

[[ 1  2  3  4]
[ 2  4  5  6]
[10 20 39  3]]

Printing the transpose of the array:

[[ 1  2 10]
[ 2  4 20]
[ 3  5 39]
[ 4  6  3]]

Iterating over the transposed array

1 2 3 4 2 4 5 6 10 20 39 3
Sorting the transposed array in C-style:

[[ 1  2 10]
[ 2  4 20]
[ 3  5 39]
[ 4  6  3]]

Iterating over the C-style array:

1 2 10 2 4 20 3 5 39 4 6 3 [[ 1  2 10]
[ 2  4 20]
[ 3  5 39]
[ 4  6  3]]
Iterating over the F-style array:

1 2 3 4 2 4 5 6 10 20 39 3``````

### 例子

``````import numpy as np

a = np.array([[1, 2, 3, 4], [2, 4, 5, 6], [10, 20, 39, 3]])

print("\nPrinting the array:\n")

print(a)

print("\nPrinting the transpose of the array:\n")
at = a.T

print(at)

print("\nIterating over the transposed array\n")

for x in np.nditer(at):
print(x, end= ' ')

print("\nSorting the transposed array in C-style:\n")

print("\nIterating over the C-style array:\n")
for x in np.nditer(at, order = 'C'):
print(x, end=' ')``````

``````Iterating over the transposed array

1 2 3 4 2 4 5 6 10 20 39 3
Sorting the transposed array in C-style:

Iterating over the C-style array:

1 2 10 2 4 20 3 5 39 4 6 3``````

## 数组值修改

### 例子

``````import numpy as np

a = np.array([[1, 2, 3, 4], [2, 4, 5, 6], [10, 20, 39, 3]])

print("\nPrinting the original array:\n")

print(a)

print("\nIterating over the modified array\n")

for x in np.nditer(a, op_flags = ['readwrite']):
x[...] = 3 * x;
print(x, end = ' ')``````

``````Printing the original array:

[[ 1  2  3  4]
[ 2  4  5  6]
[10 20 39  3]]

Iterating over the modified array

3 6 9 12 6 12 15 18 30 60 117 9``````

• 回顶