Numpy基础学习(三)

数组的索引

import numpy as np

# # 创建一个一维数组
# arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
# print('arr:\n', arr)
#
# # 获取arr中的单个元素 ---下标
# print('获取arr中的3元素:', arr[2])
# print('获取arr中的7元素:', arr[-2])
# # 注意:使用下标,会造成维度降低
#
# # 获取arr中的单个元素 --切片
# print('获取arr中的3元素:', arr[2:3])
# print('获取arr中的7元素:', arr[-2:-1])
# # 注意:使用切片不会造成维度降低
#
# # 获取arr中的多个元素 ---切片
# print('获取arr中的 3和7元素:', arr[2:-1:4])
# print('获取arr中的 3和5和7元素:', arr[2:-1:2])
# # 注意:切片获取元素,必须下标有规律可循,如果无规律,则不能使用切片
# # 获取arr中的多个元素 ---下标列表
# print('获取arr中的 3和 7和 8元素:', arr[[2, -2, -1]])
# # 注意:使用下标列表--->可以理解为分别获取对应下标位置的结果,将对应的结果组合起来

# 创建一个二维数组
arr = np.arange(1, 17).reshape((4, 4))
print('arr:\n', arr)

# # 如何索引元素? ---下标、切片
# # 获取arr中的单个元素 --下标
# print('获取arr的6元素:', arr[1, 1])
# print('获取arr中的15元素:', arr[3, 2])
#
# print('获取arr的6元素:', arr[1, 1:2])
# print('获取arr中的15元素:', arr[3, 2:3])
#
# print('获取arr的6元素:', arr[1:2, 1:2])
# print('获取arr中的15元素:', arr[3:, 2:3])
#
# # 获取arr中的多个元素
# print('获取arr中的6 7 10 11四个元素:\n', arr[1:3, 1:3])
# print('获取arr中的11 12 15 16四个元素:\n', arr[-2:, -2:])
#
# print('获取arr中的5  6  11 16四个元素:\n', arr[[1, 1, 2, 3], [0, 1, 2, -1]])

# 如果数组为3维数组
# arr[块维度索引,行维度索引,列维度索引]

# 如果数组为n维数组
# arr[n-1个逗号],在各个维度上进行索引

# 注意:利用bool数组索引方式
# 创建一个bool数组
# mask = np.array([0, 1, 0, 1], dtype=np.bool)
# print('mask:\n', mask)

# 利用bool数组索引arr  ----保留True的,干掉False的
# 注意:bool数组长度必须和索引维度的长度相同,否则报错。
# print('bool数组索引:\n', arr[mask, :])
# print('bool数组索引:\n', arr[:, mask])
# print('bool数组索引:\n', arr[mask, mask])


# 思考:还可以这么索引---高维度的数组由低维度数组组合而成的
# 获取7元素
# print('获取arr中的7元素:', arr[1][2])

数组的展开

import numpy as np

# 创建一个二维数组
arr = np.arange(16).reshape((4, 4))
print('arr:\n', arr)
print('*' * 100)

# 将二维数组展开
# (1) shape属性重新赋值
# arr.shape = (-1,)  # -1是占位作用
# print('arr:\n', arr)
# (2)reshape
# arr = arr.reshape((-1,))
# print('arr:\n', arr)
# (3) np.flatten
# Return a copy of the array collapsed into one dimension.
# arr = arr.flatten(order='C')
# print('arr:\n', arr)

# (4)np.ravel
# 返回数组的视图
# arr1 = np.ravel(arr,order='F')
# print('arr1:\n', arr1)



原文地址:https://www.cnblogs.com/duxiangjie/p/15748037.html