给了一个一维数组和二维数组,然后围绕着数组进行实验

arr = np.arange(16)  #生成一维数组
print("arr:\n",arr)
print("arr 的 形状:\n",arr.shape)
print("arr 的 ndim:\n",arr.ndim)

# 获取单个元素---可以通过下标来访问单个元素
data = arr[4]
print("data:\n",data)
data = arr[-1]
print("data:\n",data)

结果

arr:
 [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15]
arr 的 形状:
 (16,)
arr 的 ndim:
 1
data:
 4
data:
 15

也可以

# 获取多个元素---可以通过切片来获取,不包含结束位置
data = arr[4:13:2]
# 如果使用下标形式来获取多个元素,那么需要注意:需要将多个下标组成一个元素传进去--即组成列表
data2 = arr[[4,6,8,10,12]]
print("data:\n",data)
print("data:\n",data2)

结果

data:
 [ 4  6  8 10 12]
data:
 [ 4  6  8 10 12]

二维数组的索引

# 二维数组的索引
arr = np.arange(16).reshape((4,4))
print("arr:\n",arr)
print("arr 的 形状:\n",arr.shape)
print("arr 的 ndim:\n",arr.ndim)

# 获取第一列元素
data = arr[:,0]# 逗号之前代表行,逗号之后代表列,而且这个叫行列同时索引
data2 = arr[:,0:1]# 逗号之前代表行,逗号之后代表列,而且这个叫行列同时索引
print("data:\n",data)
print("data2:\n",data2)

结果

data:
 [ 0  4  8 12]
data2:
 [[ 0]
 [ 4]
 [ 8]
 [12]]
# 获取 0 2 行的 前两列
data = arr[[0,2],0:2:1]
data2 = arr[[0,2],[0,1]] # 这个与上一行结果不同
# 这个是 一一对应去取
# data = arr[[0,2],[0,1,2]]  # 错误的,如果这样取值,前后的形状必须一致
print("data:\n",data)
print("data2:\n",data2)

结果

data:
 [[0 1]
 [8 9]]
data2:
 [0 9]
data = arr[::2,0:2:1]
data2 = arr[[1,2],1:3]
print("data:\n",data)
print("data2:\n",data2)

结果

data:
 [[0 1]
 [8 9]]
data2:
 [[ 5  6]
 [ 9 10]]
arr_mask = np.array([0,1,0,3],dtype=np.bool)
print(arr_mask)
# # --->[0,1,2,3]--->[False True True True]
# # 利用bool数组进行切片
data = arr[arr_mask,:] #第0行不见了
data2 = arr[:,arr_mask] # 第0列不见了
print("data:\n",data)
print("data:\n",data2)

结果

data:
 [[ 4  5  6  7]
 [12 13 14 15]]
data2:
 [[ 1  3]
 [ 5  7]
 [ 9 11]
 [13 15]]
# bool 数组做索引,False 为丢弃, True 为选择

# 三维 或者多维数组
"""
一维  arr[下标/切片]
二维  arr[行下边或者切片,列下标或者切片] 
三维  arr[块下标或者切片,行,列]
四维  arr[堆下标或者切片,块,行,列]
"""

# 注意:
#  如果使用下标,会降维度,如果使用切片,维度不变
# bool数组进行索引的时候,需要索引的是二维数组,那么你的bool数组是一维的,
# bool数组的长度 需要与你要切的维度的长度一致

以上便是数组的索引

接下来我们来把二维数组进行展开

import numpy as np

# 创建一个二维数组
arr = np.arange(16).reshape((4,4))
print("arr;\n",arr)

# 进行数组展开
# ravel() --进行将高维度数组 展开为一维,按行展开
print('=======ravel========')
print(arr.ravel())
# flatten() -进行将高维度数组 展开为一维,按行展开---默认为C风格
print('=======flatten========')
print(arr.flatten(order = "C"))
# 按列展开
print(arr.flatten(order = "F"))

结果

arr;
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
=======ravel========
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15]
=======flatten========
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15]
[ 0  4  8 12  1  5  9 13  2  6 10 14  3  7 11 15]

数组的组合:

import numpy as np


# 创建数组
arr_1 = np.arange(4).reshape((2,2))
print("arr1:\n",arr_1)

# 创建一个二维数组
arr_2 = np.arange(4,8).reshape([2,2])
arr_3 = np.array([[1,2]])
print("arr2:\n",arr_2)
print("arr3:\n",arr_3)

# 数组组合 ---参数 需要是一个对象---元组对象、或者列表对象
new_arr1 = np.vstack((arr_1,arr_2)) #按照行的方向进行拼接
new_arr2 = np.hstack([arr_1,arr_2]) #按照列的方向进行拼接
new_arr3 = np.concatenate((arr_1,arr_3),axis=0) # (行,列) ---和vstack一样
new_arr4 = np.concatenate((arr_1,arr_2),axis=1) # (行,列) ----和hstack 一样
print("new_arr1:\n",new_arr1)
print("new_arr2:\n",new_arr2)
print("new_arr3:\n",new_arr3)
print("new_arr4:\n",new_arr4)

结果

arr1:
 [[0 1]
 [2 3]]
arr2:
 [[4 5]
 [6 7]]
arr3:
 [[1 2]]
new_arr1:
 [[0 1]
 [2 3]
 [4 5]
 [6 7]]
new_arr2:
 [[0 1 4 5]
 [2 3 6 7]]
new_arr3:
 [[0 1]
 [2 3]
 [1 2]]
new_arr4:
 [[0 1 4 5]
 [2 3 6 7]]

接下来就是数组的拆分:

import numpy as np

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

# 拆分 ----平均拆分,必须能整除,否则报错
new_arr = np.hsplit(arr,4)  # 在列的方向上进行分割数组
print("new_arr:\n",new_arr)
print("new_arr:\n",type(new_arr[0]))

new_arr2 = np.vsplit(arr,4)  # 在行的方向上进行分割数组
print("new_arr2:\n",new_arr2)
print("new_arr2:\n",type(new_arr2[0]))

new_arr3 = np.split(arr,4,axis=0)  # 在行的方向上进行分割数组
new_arr4 = np.split(arr,4,axis=1)  # 在列的方向上进行分割数组
print("new_arr3:\n",new_arr3)
print("new_arr3:\n",type(new_arr3[0]))

print("new_arr4:\n",new_arr4)
print("new_arr4:\n",type(new_arr4[0]))

结果

arr:
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
new_arr:
 [array([[ 0],
       [ 4],
       [ 8],
       [12]]), array([[ 1],
       [ 5],
       [ 9],
       [13]]), array([[ 2],
       [ 6],
       [10],
       [14]]), array([[ 3],
       [ 7],
       [11],
       [15]])]
new_arr:
 <class 'numpy.ndarray'>
new_arr2:
 [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]]), array([[12, 13, 14, 15]])]
new_arr2:
 <class 'numpy.ndarray'>
new_arr3:
 [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]]), array([[12, 13, 14, 15]])]
new_arr3:
 <class 'numpy.ndarray'>
new_arr4:
 [array([[ 0],
       [ 4],
       [ 8],
       [12]]), array([[ 1],
       [ 5],
       [ 9],
       [13]]), array([[ 2],
       [ 6],
       [10],
       [14]]), array([[ 3],
       [ 7],
       [11],
       [15]])]
new_arr4:
 <class 'numpy.ndarray'>