索引、切片、迭代

索引

arr = np.arange(10)
print(arr)
print("通过下标选择元素:", arr[5])
print("通过切片选择元素:", arr[3:8])
print("通过切片设置步长选择元素:", arr[::2])
print("循环数组:")
for item in arr:
    print("当前元素是:", item * 5)

高级索引

a = np.arange(10) * 2
print("原始数组:", a)
b = np.array([1, 1, 3, 4])
print("通过b索引的数据:", a[b])
c = np.array([[2, 3], [5, 6]])
print("通过c索引的数据:", a[c])
a = np.arange(8).reshape(2, 4)
print("原始数组a:", a)
b = a > 4
print("新的布尔数组b:", b)
print("使用布尔数组进行筛选:", a[b])
a = np.arange(10).reshape(2, 5)
print(a)
b = np.ix_([0, 1], [2, 3])
print("使用整数数组筛选数据:", a[b])
c = np.ix_([True, True], [1, 3])
print("使用布尔数组筛选数据:", a[c])

切片

1、按行切片

def get_rows(t):

    print('取一行')
    print(t[3])         # line: 4
    print(t[3, :])      # line: 4
    print('---------------------')

    # 某行开始到结尾
    print('某行开始到结尾')
    print(t[3:])
    print(t[3:, :])     # 4~ends
    print('---------------------')

    # 某行开始到某行结束
    print('某行开始到某行结束')
    print(t[1:4])       # 2~4
    print(t[1:4, :])    # 2~4
    print('---------------------')

    # 某行开始到某行结束,有跨度
    print('某行开始到某行结束,有跨度')
    print(t[1:4:2])       # 2~4, step 2 = 2,4
    print(t[1:4:2, :])    # 2~4, step 2 = 2,4
    print('---------------------')

    # 选取指定行
    print('选取指定行')
    print(t[[0, 2, 4]])     # [1, 3, 5]行
    print(t[[0, 2, 4], :])  # [1, 3, 5]行

    # 按行切片选择指定列
    print("按第行切片选择指定列:", t[0:3, 2])
    print("按行切片选择所有列:", t[0:2, :])
# end def

2、 按列切片

def get_cols(t):
    """
    按列切片
    """
    print('取一列')
    print(t[:, 3])      # column: 4
    print('---------------------')

    # 某列开始到结尾
    print('某列开始到结尾')
    print(t[:, 3:])     # 4~ends
    print('---------------------')

    # 某列开始到某列结束
    print('某列开始到某列结束')
    print(t[:, 1:4])    # 2~4
    print('---------------------')

    # 某列开始到某列结束,有跨度
    print('某列开始到某列结束,有跨度')
    print(t[:, 1:4:2])  # 2~4, step 2 = 2,4
    print('---------------------')

    # 选取指定列
    print('选取多列')
    print(t[:, [0, 2, 4]])  # [1, 3, 5]列

    # 按列切片选择行
    print("按列切片选择所有行:", t[:, 1:3])
# end def

迭代

arr0 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]).reshape(3, 4)
print(arr0)
for row in arr0:
    print("按行遍历:")
    print(row)

for e in arr0.flat:
    print("按元素遍历:", e)