import numpy as np
a= np.array([1,2,3,4])
print(a)# [1 2 3 4]
b= a.reshape([2,2])
print(b)
# [[1 2]
# [3 4]]
数组的一维迭代器,支持索引、遍历等操作
import numpy as np
arr= np.array([[1,2,3],[4,5,6]])
print(arr.flat[0])#1
print(arr.flat[5])#6
for x in arr.flat:
print(x,end=' ')#1 2 3 4 5 6
import numpy as np
arr= np.array([[1,2,3],[4,5,6]])
print(arr)
# [[1 2 3]
# [4 5 6]]
print(arr.flatten())# [1 2 3 4 5 6]
print(arr.flatten("C"))# [1 2 3 4 5 6]
print(arr.flatten("F"))# [1 4 2 5 3 6]
import numpy as np
arr= np.array([[1,2,3],[4,5,6]])
print(arr)
# [[1 2 3]
# [4 5 6]]
print(arr.ravel())# [1 2 3 4 5 6]
print(arr.ravel("C"))# [1 2 3 4 5 6]
print(arr.ravel("F"))# [1 4 2 5 3 6]
ravel函数完成展平的操作。返回数组的一个视图
flatten函数完成展平的操作,与ravel函数的功能相同。但是,flatten函数会请求分配内存来保存结果
ravel只是改变了原数组的视图(显示方式),本质还是原数组(内存地址是一致的),因此在ravel的基础上进行改动,会影响到原有的数组,而flatten则是在原数组的基础上复制了一个副本出来,和原数组之间无联系,所以改动fatten的内容,不会影响到原数组的效果
import numpy as np
arr= np.arange(24).reshape(2,3,4)
print(arr.shape)#(2, 3, 4)
print(arr.T.shape)#(4, 3, 2)
print(np.transpose(arr).shape)#axes为默认值时,相当于print(arr.T.shape),此时打印的值为(4, 3, 2)
print(np.transpose(arr,[1,0,2]).shape)#(3, 2, 4)
#设置axes的值时,以此例来讲,默认值为0,1,2维,可自行设置相关维度的对换
#若axes:[2,0,1],则打印出来的值为(4,2,3)
import numpy as np
arr= np.arange(10).reshape(2,5)
print(arr)
# [[0 1 2 3 4]
# [5 6 7 8 9]]
print(arr.T)
# [[0 5]
# [1 6]
# [2 7]
# [3 8]
# [4 9]]
# 即2行5列转置为5行2列
沿指定轴连接相同形状的两个或多个数组,此函数可以在水平或垂直方向上操作
numpy.concatenate((a1, a2, ...), axis)
axis就是轴的意思
一维数组拥有一个轴:axis=0;
二维数组拥有两个轴:axis=0,axis=1;
三维数组拥有三个轴:axis=0,axis=1,axis=2。
import numpy as np
a1=np.array([[1,2],[3,4]])
a2=np.array([[5,6]])
print(np.concatenate((a1,a2)))
# [[1 2]
# [3 4]
# [5 6]]
print(np.concatenate((a1,a2),0))
# [[1 2]
# [3 4]
# [5 6]]
print(np.concatenate((a1,a2),None))#[1 2 3 4 5 6]
# print(np.concatenate((a1,a2),1))
#会报错
# 使用此函数要求除了连接轴以外的所有输入数组维度都必须完全匹配,
# 但是沿着维度0,索引0处的数组大小为2,索引1处的数组大小为1
print("--------------")
a11=np.array([[1,2],[3,4],[5,6]])
a22=np.array([[7,8],[2,3],[3,4]])
print(np.concatenate((a11,a22)).shape)#(6, 2)
print(np.concatenate((a11,a22),1).shape)#(3, 4)
indices_or_sections :如果是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的位置(左开右闭)
import numpy as np
arr=np.arange(24).reshape(4,6)
print(np.split(arr,2))
# [array([[ 0, 1, 2, 3, 4, 5],
# [ 6, 7, 8, 9, 10, 11]]), array([[12, 13, 14, 15, 16, 17],
# [18, 19, 20, 21, 22, 23]])]
print(np.split(arr,2,1))
# [array([[ 0, 1, 2],
# [ 6, 7, 8],
# [12, 13, 14],
# [18, 19, 20]]), array([[ 3, 4, 5],
# [ 9, 10, 11],
# [15, 16, 17],
# [21, 22, 23]])]
print(np.split(arr,[1,3]))
# [array([[0, 1, 2, 3, 4, 5]]), array([[ 6, 7, 8, 9, 10, 11],
# [12, 13, 14, 15, 16, 17]]), array([[18, 19, 20, 21, 22, 23]])]
水平分割 相当于进行split分割,axis 为 1时
垂直分割 相当于进行split分割,axis 为 0时
import numpy as np
arr=np.arange(16).reshape(4,4)
print(np.hsplit(arr,2))
# [array([[ 0, 1],
# [ 4, 5],
# [ 8, 9],
# [12, 13]]), array([[ 2, 3],
# [ 6, 7],
# [10, 11],
# [14, 15]])]
print(np.vsplit(arr,2))
# [array([[0, 1, 2, 3],
# [4, 5, 6, 7]]), array([[ 8, 9, 10, 11],
# [12, 13, 14, 15]])]