numpy.reshape():
import numpy as np
a = np.array([[1,2,3,4],[5,6,7,8],[3,4,6,6]])
a
b = a.reshape(2,6)
b
-----------------------
array([[1, 2, 3, 4],
[5, 6, 7, 8],
[3, 4, 6, 6]])
array([[1, 2, 3, 4, 5, 6],
[7, 8, 3, 4, 6, 6]])
b1 = a.reshape(2,6,order = 'F') # 竖着排
b1
-----------------
array([[1, 3, 6, 3, 6, 8],
[5, 2, 4, 7, 4, 6]])
np.ndarray.flat与np.ndarray.flatten()
flat返回的是一个迭代器,可以用for访问数组每一个元素
flatten将数组的副本转换为一个维度,并返回
ndarray.flatten(order = ‘C’)
可选参数,order;{‘C’,‘F’,‘A’,‘K’}
a = np.array([[1,2,3,4],[5,6,7,8],[3,4,6,6]])
c = a.flat
c
-------------------
print(list(c))
----------------
[1, 2, 3, 4, 5, 6, 7, 8, 3, 4, 6, 6]
for i in a.flat:
print(i,end = ' ')
-----------
1 2 3 4 5 6 7 8 3 4 6 6
print(a.flatten()) # 不是列表,是ndarray,生成的是副本
a
------------------
[1 2 3 4 5 6 7 8 3 4 6 6]
array([[1, 2, 3, 4],
[5, 6, 7, 8],
[3, 4, 6, 6]])
nd.ndarray.T转置
print(a.T)
-------------------
[[1 5 3]
[2 6 4]
[3 7 6]
[4 8 6]]
np.comcatenate() 连接组合
传入的参数必须是一个多个数组的元祖或者列表
传入的数组必须有相同的形状
需要指定拼接方向,默认是axis=0
a = np.arange(6).reshape(2,3)
a
print("----------")
b = np.array([[2,3,4],[4,5,6]])
b
print("-----------")
print(np.concatenate((a,b)))#默认沿着0轴进行连接,要列相同
print('------------')
print(np.concatenate((a,b),axis=1))# 要行相同
array([[0, 1, 2],
[3, 4, 5]])
array([[2, 3, 4],
[4, 5, 6]])
[[0 1 2]
[3 4 5]
[2 3 4]
[4 5 6]]
[[0 1 2 2 3 4]
[3 4 5 4 5 6]]
#np.hstack # 水平方向堆叠,axis= 1
print(np.hstack((a,b)))
[[0 1 2 2 3 4]
[3 4 5 4 5 6]]
#np.vstack #竖直方向,axis=0
print(np.vstack((a,b)))
[[0 1 2]
[3 4 5]
[2 3 4]
[4 5 6]]
#np.stack(array.axis = 0)
#如果axis = 0,它将是第一个维度,axis=1,它将是最后一个维度
print(np.stack((a,b),0)) # 沿着0轴堆叠两个矩阵
[[[0 1 2]
[3 4 5]]
[[2 3 4]
[4 5 6]]]
print(np.stack((a,b),1)) # 沿着1轴堆叠两个矩阵
[[[0 1 2]
[2 3 4]]
[[3 4 5]
[4 5 6]]]
np.split()分割数组
#numpy.split(ary,indices_sections,axis)
a = np.arange(12)
print(a)
b = np.split(a,3) #分成三等分
b
[ 0 1 2 3 4 5 6 7 8 9 10 11]
[array([0, 1, 2, 3]), array([4, 5, 6, 7]), array([ 8, 9, 10, 11])]
c = np.split(a,[4,7])#在4和7处分割
c
[array([0, 1, 2, 3]), array([4, 5, 6]), array([ 7, 8, 9, 10, 11])]
d=np.split(a,[0,3,6])
d
[array([], dtype=int32),
array([0, 1, 2]),
array([3, 4, 5]),
array([ 6, 7, 8, 9, 10, 11])]
#np.hsplit
a=np.arange(16).reshape(4,4)
print(a)
b = np.hsplit(a,2) # 从第二列分开
b
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
[array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]), array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])]
c = np.vsplit(a,2) #从第二行分开
c
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11],
[12, 13, 14, 15]])]
np.append() 往数组中添加元素
a = np.arange(10).reshape(2,5)
print(a)
print('-------------')
print(np.append(a,[10,11,12]))
print("-------------")
print(np.append(a,[[10,11,12,13,14]],axis = 0))# 沿着0轴进行添加
[[0 1 2 3 4]
[5 6 7 8 9]]
[ 0 1 2 3 4 5 6 7 8 9 10 11 12]
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
print(np.append(a,[[6,6,6],[7,7,7]]))
[0 1 2 3 4 5 6 7 8 9 6 6 6 7 7 7]
print(np.append(a,[[6,6,6,],[7,7,7]],axis = 1))
[[0 1 2 3 4 6 6 6]
[5 6 7 8 9 7 7 7]]
np.insert()
np.insert(ary,obj,values,axis)
第四个参数没有给出,就默认先对arr进行flatten操作,变为一维数组,
然后在对应的位置插入相应的值
a = np.array([[1,2],[3,4],[5,6]])
print(a)
print(np.insert(a,6,[8,9])) # 没有axis参数则把原数组拉成一行然后添加
print(np.insert(a,2,[8,9])) # 在索引为2的位置上添加
[[1 2]
[3 4]
[5 6]]
[1 2 3 4 5 6 8 9]
[1 2 8 9 3 4 5 6]
print(np.insert(a,1,[8,9],axis = 0)) #索引为1的那一行添加
[[1 2]
[8 9]
[3 4]
[5 6]]
print(np.insert(a,1,[8,9,10],axis = 1))#在索引为1 的列添加一列
[[ 1 8 2]
[ 3 9 4]
[ 5 10 6]]
np.delete()
np.delete(arr,obj,axis)
arr:输入向量
obj:表明哪一个字向量应该被移除。可以为整数或int型的向量
axis:表明删除哪个轴的字向量,若默认,则返回一个被拉平的向量
a
print(np.delete(a,3))
array([[1, 2],
[3, 4],
[5, 6]])
[1 2 3 5 6]
print(np.delete(a,2,axis = 0)) # 删除索引为2 的行
[[1 2]
[3 4]]
print(np.delete(a,1,axis = 1)) # 删除索引为1 的列
[[1]
[3]
[5]]
np.unique()
去除数组中的重复数字,并排序后输出
a = np.array([3,4,5,6,2,5,3,3,5,9,4])
print(np.unique(a))
[2 3 4 5 6 9]
aa = np.array([[3,4,2,6,6],[4,5,3,2,9]])
print(np.unique(aa))
[2 3 4 5 6 9]