当前位置: 首页>编程语言>正文

python建立指定行列数的df python创建4行六列的矩阵

import numpy as np

print("-"*100)
print("numpy 得array创建")
array = np.array([[1,2,3],[2,3,4]])    # 将列表 转为 numpy数组(矩阵)
print(array)
print("number of dim:",array.ndim)  # 矩阵是几维
print("shape:",array.shape)     # 有多少行,多少列  (2,3)代表两行三列
print("size:",array.size)     # 矩阵总共有多少元素   2*3= 6

a = np.array([2,23,4],dtype=np.int)   # 创建
print(a)

a = np.zeros((3,4))  # 创建全部为0  3行4列的矩阵,二维
print(a)
a1 = np.ones((3,4)) # 创建全部为1   3行4列的矩阵,二维
print(a1)
a2 = np.empty((3,4)) # 创建全部无限接近为0的数   3行4列的矩阵,二维
print(a2)

a3 = np.arange(10,20,2) # 生成有序得数列,10到19  步长为2
print(a3)
a4 = np.arange(12).reshape((3,4)) # 生成三行4列 从0到11得 二维矩阵
print(a4)
a5 = np.linspace(1,10,6).reshape((2,3)) # 将1到10 分为6份, 两行三列 行列相乘不可大于份数
print("a5:",a5)
print("-"*100)
print("numpy 基础运算")
# 减法
a = np.array([10,20,30,40])
b = np.arange(4)
c = a - b
print(c)
# 加法
a = np.array([10,20,30,40])
b = np.arange(4)
c = a + b
print(c)
# 乘法
a = np.array([10,20,30,40])
b = np.arange(4)
c = b**2   # B得平方
print(c)
c1 = 10*np.sin(a) # 对a得每个元素求 sin 然后*10
print(c1)
# 比较
print(b<3)
print(b==3)
# 矩阵运算
a = np.array([[1,1],
              [0,1]])
b = np.arange(4).reshape((2,2))
print(a)
print(b)
# 逐个相乘
c = a*b
print(c)
# 矩阵相乘
c_dot = np.dot(a,b)
c_dot_2 = a.dot(b)
print(c_dot)
# 随机产生 2行4列 从0,1得随机数
a = np.random.random((2,4))
np.sum(a) # 求和   所有元素相加
np.min(a) # 求最小值
np.max(a) # 求最大值
print(np.sum(a,axis=1)) # 每一行 进行相加
print(np.min(a,axis=0)) # 每一列得最小值
print(np.max(a,axis=1)) # 每一行得最大值

A = np.arange(2,14).reshape((3,4)) # [[ 2  3  4  5][ 6  7  8  9][10 11 12 13]]
print(A)
print(np.argmin(A)) # 获得矩阵最小值 索引
print(A.argmin()) # 获得矩阵最小值 索引
print(np.argmax(A)) # 获得矩阵最大值 索引
print(A.argmax()) # 获得矩阵最大值 索引
print(np.mean(A)) # 计算整个矩阵的 平均值
print(A.mean()) # 计算整个矩阵的 平均值
print(np.average(A)) # 计算整个矩阵的 平均值
print(np.median(A))  # 输出矩阵中位数
print(np.cumsum(A)) # 矩阵两两相加 得出的和 在相加下一位元素
print(np.diff(A)) #  元素之间得差值
print(np.nonzero(A)) # 输出 (array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))

A = np.arange(14,2,-1).reshape((3,4)) #[[14,13,12,11],[10,9,8,7],[6,5,4,3]]
print(A)
print(np.sort(A))  # 逐行进行从小到大 排序[[11 12 13 14][ 7  8  9 10][ 3  4  5  6]]
print(np.transpose(A)) # 行变列 列变行 [[14 10  6][13  9  5][12  8  4][11  7  3]]
print(A.T) # 行变列 列变行 [[14 10  6][13  9  5][12  8  4][11  7  3]]
# 变化后 与 原矩阵 相乘
print((A.T).dot(A)) #[[332 302 272 242][302 275 248 221][272 248 224 200][242 221 200 179]]
print(np.clip(A,5,9)) # 让小于5得数等于5 让大于9得数大于9 处于5--9中间得数保持不变
print(np.mean(A,axis=1)) # axis=0 时输出每列平均值 axis=1 时输出每行平均值

print("-"*100)
print("numpy 索引")
A = np.arange(3,15) # [ 3  4  5  6  7  8  9 10 11 12 13 14]
print(A[3]) # 6
A = np.arange(3,15).reshape((3,4)) #[[ 3  4  5  6][ 7  8  9 10][11 12 13 14]]
print(A[2]) # [11 12 13 14]  索引 行数2
print(A[1][1]) # 第一行得第一列  8
print(A[2][1]) # 第二行得第一列  12
print(A[2,1]) # 第二行得第一列   12
print(A[2,:]) # 第二行得所有数   [11 12 13 14]
print(A[:,1]) # 第一列得所有数   [ 4  8 12]
print(A[1,1:3]) # 第一行,第一列到第二列得所有数 [8 9]

for row in A: # 逐行打印
    print("逐行打印:",row)
for column in A.T: # 将列变为行 逐行打印
    print("将列变为行 逐行打印:",column)
print(A.flatten())
for item in A.flat: # 元素逐个打印
    print("元素逐个打印:",item)

print("-"*100)
print("numpy 得array合并")
A = np.array([1,1,1])
B = np.array([2,2,2])
C = np.vstack((A,B))  # 上下合并  [[1 1 1][2 2 2]]
print(C)
print(A.shape,C.shape) # (3,) (2, 3)
D = np.hstack((A,B))  # 左右合并  [1 1 1 2 2 2]
print(D)
print(A.shape,D.shape) # (3,) (6,)
print(A[:,np.newaxis])  # 将横向1,1,1 变为 纵向 [[1][1][1]]
print(B[:,np.newaxis])

A = np.array([1,1,1])[:,np.newaxis]
B = np.array([2,2,2])[:,np.newaxis]
E = np.hstack((A,B)) #[[1 2][1 2][1 2]]
print(E)

F = np.concatenate((A,B,B,A),axis=1) # axis=0上下合并  axis=1 左右合并
print(F)

print("-"*100)
print("numpy 得array分割")
A = np.arange(12).reshape((3,4))
print(A)
print(np.split(A,2,axis=1)) # [array([[0, 1],[4, 5],[8, 9]]), array([[ 2,  3],[ 6,  7],[10, 11]])]
print(np.split(A,3,axis=0)) # [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
print(np.array_split(A,3,axis=1))
print(np.vsplit(A,3)) # 按行分割
print("横向分割:",np.hsplit(A,2)) # 按列分割

print("-"*100)
print("numpy 得copy 和 deep copy")
print("numpy 得浅拷贝 和 深拷贝")
# 浅拷贝 指向同一内存地址
# 深拷贝 开辟新得地址
a = np.arange(4) # 创建
print("a:",a)
b = a  # 浅拷贝
c = a  # 浅拷贝
d = b  # 浅拷贝
a[0] = 11
print(a)
print(d)
print(b is a)
d[1:3] = [22,33]
print(c)
b = a.copy() # 深拷贝
a[3] = 44
print(a) # [11 22 33 44]
print(b) # [11 22 33  3]



https://www.xamrdz.com/lan/5qq1962759.html

相关文章: