numpy - array(4)

发布于:2024-06-30 ⋅ 阅读:(21) ⋅ 点赞:(0)
arr1 = np.array([[1, 2], [3, 4], [5, 6]])
(1)def insert(arr, obj, values, axis=None)    向array指定位置插入指定值
 axis为默认值None时,如果array是多维数据,则先将array转化成向量
 obj:插入的索引,接受int或者多个int的元组货列表。
 values:插入的值,接受单个或多个值,axis为默认值None时有以下情况:
   values:单个值,obj:单个值:    在原array索引处插入单个值
   values:多个值,obj:单个值:    在原array索引处插入多个值
   values:单个值,obj:多个值:    在原array多个索引处都插入单个值
   values:多个值,obj:多个值:    values数量与obj数量必须相等,在原array多个索引处插入相应的值
arr_insert1 = np.insert(arr1, [1], [10, 9])
arr_insert2 = np.insert(arr1, [1, 2], [10])
arr_insert3 = np.insert(arr1, [1, 2], [10, 9])
 axis:插入的维度,只接受单个int
 如果values是单个值,则插入的值尺寸自动匹配array在该维度的元素的尺寸,
 如果是多个值,则values的尺寸必须等于array在该维度的元素的尺寸
arr_insert4 = np.insert(arr1, 1, (9, 10, 11), 1)
arr_insert5 = np.insert(arr1, (1, 2), 10, 0)
arr_insert6 = np.insert(arr1, (1, 2), ((9, 10), (10, 11)), 0)
(2)vstack:向0维(fist axis)追加数据,0维尺寸会增加:
        def vstack(tup, *, dtype=None, casting="same_kind")
 tup = (目标array,追加array),追加array可以传多个array
 追加array与目标array必须有相同的维度,只在0维/fist axis 上的形状可以不同,其他维度形状必须相同
arr_vstack1 = np.vstack((arr1, [7, 8], (9, 9)))
arr_vstack2 = np.vstack((arr1, [(7, 8), (8, 9), (9, 10)]))
arr2 = np.array([[[1, 2], [3, 4], [5, 6]]])
 arr2是3维array,目标array也必须传3维array

arr_vstack3 = np.vstack((arr2, [[(7, 8), (8, 9), (9, 10)]], [[(7, 8), (8, 9), (9, 10)]]))  
(3)hstack:向1维(second axis)追加数据,1维尺寸会增加:
        def hstack(tup, *, dtype=None, casting="same_kind")
 tup = (传目标array,追加array),追加array可以传多个array
 追加array与目标array必须有相同的维度,只在1维/second axis 上的形状可以不同,其他维度形状必须相同
append_array1 = np.array((1, 1, 1))
append_array1 = append_array1.reshape(-1, 1)

arr_hstack1 = np.hstack((arr1, append_array1))

append_array2 = np.array((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1))
append_array2 = append_array2.reshape(3, -1, 2)

arr_hstack2 = np.hstack((arr_vstack3, append_array2))
(4)def delete(arr, obj, axis=None) 删除目标array指定轴(维度)指定索引的数据
 arr:目标array
 obj:要删除数据的索引,接收int或int元组,必须参数
 axis:要删除的数据所在的维度,只接受int。如果不传参,则会现将array转化为向量在做删除操作

arr_del1 = np.delete(arr_vstack3, 1)
arr_del2 = np.delete(arr_vstack3, (0, 1), axis=1)
(5)使用bool过滤进行指定删除,结果数据的最高维度自动降维为(目标array的最高维度 - 判断维度的最高维度)
arr3 = np.array([(1, 1, 1, 1), (2, 2, 0, 2), (3, 3, 3, 3), (4, 4, 0, 4)])
temp_bool1 = arr3[:, 2] == 0
arr_del_bool1 = arr3[~temp_bool1]
目标array最高维度是1,判断结果最高维度是0,结果数据最高维度是1

arr_vstack3[1, 1, 1] = 0
arr4 = arr_vstack3
temp_bool2 = arr4[:, :, :] == 0
arr_del_bool2 = arr4[~temp_bool2]
目标array最高维度是2,判断结果最高维度是2,结果数据最高维度是0