一:数组的追加:
1追加一个元素,会对多维数组进行降维操作,无论是一维数组还是多维数组,那么返回的也是一维数组,追加以后需要重新调成维度大小。
import numpy as np
s1=np.array([1,3,5,7,9,2,4,6,8,0])
s2=s1.reshape(2,5)
s3=np.append(s1,11)
print(s3)
结果:[ 1 3 5 7 9 2 4 6 8 0 11]
2追加一维数组,如果是一维数组,则不需要axis参数,
多维数组的追加,降维成一维数组,将元素追加到末尾
import numpy as np
s1=np.array([1,3,5,7,9,2,4,6,8,0])
s2=s1.reshape(2,5)
s3=np.append(s1,[12,13,14])
s4=np.append(s2,[12,13])
print(s3)
print(s4)
结果:
[ 1 3 5 7 9 2 4 6 8 0 12 13 14]
[ 1 3 5 7 9 2 4 6 8 0 12 13]
3 一维数组追加一维数组,追加完成之后,将要添加的一维数组迭代取出,加入到本数组的 末尾
s5=np.append(s3,s4)
print(s5)
结果:
[ 1 3 5 7 9 2 4 6 8 0 12 13 14 1 3 5 7 9 2 4 6 8 0 12 13]
二:数组的插入(insert)
1一维数组与多维数组的关系
import numpy as np
#insert:的底层格式: #np.insert(arr, obj, values, axis=None)
s1 = np.arange(10,20)
s2=s1.reshape(2,5)
print(s1)
s3=np.insert(s1,0,100,axis=0) 一维数组在索引为0的位置上插入值100
print(s2)
s4=np.insert(s2,0,100,axis=0) 多维数组在行索引为0的位置上插入一行values:100
s5=np.insert(s2,1,100,axis=1) 多维数组在列索引为1的位置上插入一列values:100
print('s4=s%',%s4)
print('s5=s%',%s5)
结果:
s1=[10 11 12 13 14 15 16 17 18 19]
s3=[100 10 11 12 13 14 15 16 17 18 19]
s2=[[10 11 12 13 14]
[15 16 17 18 19]]
s4=[[100 100 100 100 100]
[ 10 11 12 13 14]
[ 15 16 17 18 19]]
s5=[[ 10 100 11 12 13 14]
[ 15 100 16 17 18 19]]
注意:如果插入的元素是‘100’,是可以的,但是‘a'是不行的
还有:如果是有行列参数,注意元素的插入位置,如果多维数组没有指定行列的情况下,默认降维成一维数组,插入在指定的位置
axis这个参数表示:0表示列,1表示行
s6=np.insert(s2,1,100)
print(s6)
结果:
[ 10 100 11 12 13 14 15 16 17 18 19]
三:数组的删除
1,delete函数的使用问题
import numpy as np
s1 = np.arange(10,20)
s2 = s1.reshape((2,5))
s3 = np.delete(s1,9,axis=0)
print(s3)
结果
[10 11 12 13 14 15 16 17 18]
一维数组的删除,注意点不能使用axis=1,单个元素的删除
一维数组删除,删除多个元素,如果多个下标需要删除,打包成一个列表,下标的位置可以打乱,也可写一个不存在的下标,但是不要瞎写
s4 = np.delete(s1,[8,9,7,100],axis=0) (索引为100的并不存在)
print(s4)
多维:
# 多维数组删除一个元素的情况
s5 = np.delete(s2,0)
print(s5)
# 多维数组删除一个元素的情况
s5 = np.delete(s2,0,axis=0)
print(s5)
结果:删除第一行的数组
[[15 16 17 18 19]]
# 多维数组删除一个元素的情况
s5 = np.delete(s2,0,axis=1)
print(s5)
结果:删除第一列元素
[[11 12 13 14]
[16 17 18 19]]
s6 = np.delete(s3,[0,1],axis=0)
print(s6)
结果删除第一行和第二行的元素
[]
四,数组的合并
数组们必须有相同的大小
# 一维数组
s1 = np.arange(10,20)
s2 = np.arange(30,40)
# 二维数组
s3 = s1.reshape((2,5))
s4 = s2.reshape((2,5))
# 一维数组的合并,不能axis=1
s5 = np.concatenate((s1,s2),axis=0)
print(s5)
[10 11 12 13 14 15 16 17 18 19 30 31 32 33 34 35 36 37 38 39]
# 多维数组的合并,0代表列
s6 = np.concatenate((s3,s4),axis=0)
print(s6)
[[10 11 12 13 14]
[15 16 17 18 19]
[30 31 32 33 34]
[35 36 37 38 39]]
s7 = np.concatenate((s3,s4),axis=1)
print(s7)
[[10 11 12 13 14 30 31 32 33 34]
[15 16 17 18 19 35 36 37 38 39]]
五、集合的问题
1 去重操作
import numpy as np
list1=[1,1,1,1,2,3,4,5,12,12,13,7,8,9,9,9]
print(len(list1))
s1 = np.array(list1)
print(s1)
# 一维数组的去重操作
s2 = np.unique(s1)
print(s2)
s3 = s1.reshape((4,4))
print(s3)
# 多维数组的去重操作,降维成一维数组
s4 = np.unique(s3)
print(s4)
结果:
[ 1 1 1 1 2 3 4 5 12 12 13 7 8 9 9 9] s1
[ 1 2 3 4 5 7 8 9 12 13] s2
[[ 1 1 1 1] s3
[ 2 3 4 5]
[12 12 13 7]
[ 8 9 9 9]]
[ 1 2 3 4 5 7 8 9 12 13] s4
2并集:
求并集的情况
s5 = np.arange(16)
print(s5)
s6 = s5.reshape((4,4))
print(s6)
# 一维数组的并集,去重并且排序
s7 = np.union1d(s1,s5)
s8 = np.union1d(s3,s6)
# 多维数组求并集降维,去重并且排序
3 求交集
# 一维数组求交集
s9 = np.intersect1d(s1,s5)
print(s9)
s10 = np.intersect1d(s1,s5,assume_unique=True)
print(s10)
# 多维数组 降维并去重
s11 = np.intersect1d(s3,s6)
print(s11)
注释:
assume_unique : bool
If True, the input arrays are both assumed to be unique, which
can speed up the calculation. Default is False.