NumPy

1. 创建NumPy数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np

# 创建一个Python列表
list_array = [1, 2, 3, 4, 5, 6]
print(type(list_array)) # 输出: list

# 将列表转换为NumPy数组
np_array = np.array([1, 2, 3, 4, 5])
print(np_array)
print(type(np_array)) # 输出: numpy.ndarray

# 数组的数学运算
print(np_array + 1) # 输出: array([2, 3, 4, 5, 6])
print(np_array + np_array) # 输出: array([ 2, 4, 6, 8, 10])

2. 数组的数据类型

1
2
3
4
5
6
# 混合类型列表
li = [1, 2, 3.14, 4]

# 将混合类型列表转换为NumPy数组,默认转换为最宽泛的类型,即float64
np_array = np.array(li)
print(np_array.dtype) # 输出: dtype('float64')

3. ndarray的结构和属性

1
2
3
4
5
6
7
# 创建一个二维数组
np_array_2d = np.array([[1, 2, 3], [4, 5, 6], [9, 12, 11]])

# 属性访问
print(np_array_2d.shape) # 输出: (3, 3)
print(np_array_2d.size) # 输出: 9
print(np_array_2d.ndim) # 输出: 2

4. 索引和切片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 索引单个元素
print(np_array_2d[1, 1]) # 输出: 5

# 修改元素值
np_array_2d[1, 1] = 777
print(np_array_2d)

# 按行或列取值
print(np_array_2d[1]) # 输出: array([4, 777, 6])
print(np_array_2d[:, 1]) # 输出: array([ 2, 777, 12])

# 切片操作
print(np_array_2d[:, 0:2]) # 输出: array([[ 1, 2],
# [ 4, 777],
# [ 9, 12]])

5. 数组赋值和复制

1
2
3
4
5
6
7
# 赋值时需要使用copy()来避免原始数组被修改
array2 = np_array_2d.copy()
array2[0, 1] = 7
print(array2) # 修改后的数组

# 原始数组保持不变
print(np_array_2d)