例子
import numpy as np
示例 1:创建多维数组
# 创建一个2x3的二维数组
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(array_2d)
运行结果:
[[1 2 3]
[4 5 6]]
练习题:
- 创建一个3x4的二维数组,填充1到12的整数。
- 创建一个2x2x3的三维数组,填充1到12的整数。
示例 2:访问多维数组的元素
# 创建一个3x3的二维数组
array_2d = np.array([[11, 12, 13], [21, 22, 23], [31, 32, 33]])
# 访问第一行第二列的元素
element = array_2d[0, 1]
print(element)
# 访问最后一行
last_row = array_2d[-1]
print(last_row)
运行结果:
12
[31 32 33]
练习题:
- 访问上面创建的3x4数组的第二行第三列的元素。
- 访问上面创建的2x2x3数组的第二层第一列的所有元素。
示例 3:切片多维数组
# 创建一个3x3的二维数组
array_2d = np.array([[11, 12, 13], [21, 22, 23], [31, 32, 33]])
# 切片第一行
row_slice = array_2d[0, :]
print(row_slice)
# 切片所有行的第二列
col_slice = array_2d[:, 1]
print(col_slice)
运行结果:
[11 12 13]
[12 22 32]
练习题:
- 切片上面创建的3x4数组的所有行的第一列。
- 切片上面创建的2x2x3数组的第一层的所有元素。
示例 4:多维数组的运算
# 创建两个3x3的二维数组
array_1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array_2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])
# 数组相加
array_add = array_1 + array_2
print(array_add)
# 元素乘法
array_multiply = array_1 * array_2
print(array_multiply)
运行结果:
[[10 10 10]
[10 10 10]
[10 10 10]]
[[ 9 16 21]
[24 25 24]
[21 16 9]]
练习题:
- 创建两个大小相同的3x4数组,执行数组相加和元素乘法操作。
- 创建两个大小相同的2x2x3数组,执行数组相加操作。
示例 5:布尔索引
# 创建一个3x3的二维数组
array_2d = np.array([[11, 12, 13], [21, 22, 23], [31, 32, 33]])
# 选择大于20的元素
bool_index = array_2d > 20
print(bool_index)
# 使用布尔索引获取大于20的元素
greater_than_20 = array_2d[bool_index]
print(greater_than_20)
运行结果:
[[False False False]
[False False False]
[ True True True]]
[31 32 33]
练习题:
- 在上面创建的3x4数组中,使用布尔索引选择所有大于5且小于10的元素。
- 在上面创建的2x2x3数组中,选择所有第二层大于5的元素。
————-
习题答案
示例 1 练习题答案:
- 创建一个3x4的二维数组,填充1到12的整数。
array_3x4 = np.arange(1, 13).reshape(3, 4)
print(array_3x4)
运行结果:
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
- 创建一个2x2x3的三维数组,填充1到12的整数。
array_2x2x3 = np.arange(1, 13).reshape(2, 2, 3)
print(array_2x2x3)
运行结果:
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
示例 2 练习题答案:
- 访问上面创建的3x4数组的第二行第三列的元素。
element = array_3x4[1, 2]
print(element)
运行结果:
7
- 访问上面创建的2x2x3数组的第二层第一列的所有元素。
second_layer_first_col = array_2x2x3[:, :, 0]
print(second_layer_first_col)
运行结果:
[[[ 1 4]
[ 7 10]]
[[ 2 5]
[ 8 11]]]
示例 3 练习题答案:
- 切片上面创建的3x4数组的所有行的第一列。
first_col = array_3x4[:, 0]
print(first_col)
运行结果:
[ 1 5 9]
- 切片上面创建的2x2x3数组的第一层的所有元素。
first_layer = array_2x2x3[0]
print(first_layer)
运行结果:
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
示例 4 练习题答案:
- 创建两个大小相同的3x4数组,执行数组相加和元素乘法操作。
array_1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
array_2 = np.array([[13, 14, 15, 16], [17, 18, 19, 20], [21, 22, 23, 24]])
# 数组相加
array_add = array_1 + array_2
print("Array Addition:\n", array_add)
# 元素乘法
array_multiply = array_1 * array_2
print("Array Multiplication:\n", array_multiply)
运行结果:
Array Addition:
[[16 18 24 32]
[26 30 44 56]
[48 54 64 72]]
Array Multiplication:
[[ 13 28 45 64]
[ 85 108 133 160]
[189 220 253 288]]
- 创建两个大小相同的2x2x3数组,执行数组相加操作。
array_1 = np.ones((2, 2, 3))
array_2 = np.ones((2, 2, 3))
# 数组相加
array_add = array_1 + array_2
print(array_add)
运行结果:
[[[2. 2. 2.]
[2. 2. 2.]]
[[2. 2. 2.]
[2. 2. 2.]]]
示例 5 练习题答案:
- 在上面创建的3x4数组中,使用布尔索引选择所有大于5且小于10的元素。
bool_index = (array_3x4 > 5) & (array_3x4 < 10)
elements = array_3x4[bool_index]
print(elements)
运行结果:
[ 6 7 8 9]
- 在上面创建的2x2x3数组中,选择所有第二层大于5的元素。
bool_index = (array_2x2x3 > 5)
second_layer_elements = array_2x2x3[1, :, bool_index]
print(second_layer_elements)
运行结果:
[ 8 9 11]