numpy 基础

array = np.array([[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]])
print(array)
[[[ 1  2]
  [ 3  4]]
 [[ 5  6]
  [ 7  8]]
 [[ 9 10]
  [11 12]]]

print(array.ndim)
3

print(array.shape)
(3, 2, 2)

print(array.size)
12

print(array.dtype)
int32

array = np.arange(1,13).reshape(2,2,3)
print(array)
[[[ 1  2  3]
  [ 4  5  6]]
 [[ 7  8  9]
  [10 11 12]]]

print(array.ndim)
3

print(array.shape)
(2, 2, 3)

print(array.size)
12

print(array.dtype)
int32
[[[ 1  2  3]
  [ 4  5  6]]

 [[ 7  8  9]
  [10 11 12]]]
3
(2, 2, 3)
12
int32
# 通过随机数生成数据 randint(1,10,12)
array = np.random.randint(1,10,12).reshape(2,2,3)
print(array)
[[[7 5 1]
  [2 7 2]]
 [[1 7 7]
  [5 2 1]]]

print(array.ndim)
3

print(array.shape)
(2, 2, 3)

print(array.size)
12

print(array.dtype)
int32

矩阵中,筛选值大于5,其他用0替换

#矩阵中,筛选值大于5,其他用0替换
array = np.random.randint(1,10,9).reshape(3,3)
print(array)
[[7 5 3]
 [1 7 8]
 [7 9 8]]

print(np.where(array>5,array,0))
[[7 0 0]
 [0 7 8]
 [7 9 8]]
array = np.random.randint(1,10,16).reshape(4,4)
print(array)
[[2 7 5 5]
 [2 8 2 1]
 [6 5 5 9]
 [3 1 9 3]]

print(np.where(array>5,array,0))
[[0 7 0 0]
 [0 8 0 0]
 [6 0 0 9]
 [0 0 9 0]]

# 取第一行
print(array[0])
[2 7 5 5]

# 取第一列
print(array[:,0])
[2 2 6 3]

# 取第一行和第三行
print(array[0::2])
[[2 7 5 5]
 [6 5 5 9]]

# 取第二列和第四列
print(array[::,1::2])
[[7 5]
 [8 1]
 [5 9]
 [1 3]]

# 取第一行和第三行的第二列和第四列
print(array[0::2,1::2])
[[7 5]
 [5 9]]
array = np.random.randint(1,10,20).reshape(4,5)
print(array)
[[9 7 2 9 6]
 [9 9 7 2 2]
 [2 4 7 7 4]
 [8 7 8 3 9]]

print(array.shape[1])
5

# shape[0] 获取array.shape中第一个数
for i in range(0,array.shape[0]):
    for j in range(0,array.shape[1]):
        print(array[i][j],end="\t")
    print()
9	7	2	9	6	
9	9	7	2	2	
2	4	7	7	4	
8	7	8	3	9

基本运算

矩阵内相加

array = np.random.randint(1,10,20).reshape(4,5)
print(array)
[[9 1 4 3 1]
 [6 8 5 5 1]
 [1 9 7 2 8]
 [1 5 8 6 4]]

# 所有值的和
print(array.sum())
94

# 每一列的和
print(array.sum(0))
[17 23 24 16 14]

# 每一行的和
print(array.sum(1))
[18 25 27 24]

数乘:

array = np.random.randint(5,10,20).reshape(4,5)
print(array)
[[5 5 7 9 6]
 [6 5 7 6 6]
 [9 5 7 6 5]
 [5 9 8 7 6]]

print(array*2)
[[10 10 14 18 12]
 [12 10 14 12 12]
 [18 10 14 12 10]
 [10 18 16 14 12]]

两个矩阵相加、减:

array = np.random.randint(1,10,20).reshape(4,5)
array2 = np.ones(20).reshape(4,5)
print(array)
[[7 1 1 7 5]
 [7 5 4 9 1]
 [3 9 1 1 4]
 [3 3 4 9 2]]

print(array2)
[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]]

print(array+array2)
[[ 8.  2.  2.  8.  6.]
 [ 8.  6.  5. 10.  2.]
 [ 4. 10.  2.  2.  5.]
 [ 4.  4.  5. 10.  3.]]

两个矩阵相乘:

两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如Am×n矩阵和Bn×p矩阵,它们的乘积C是一个m×p矩阵  ,它的一个元素

array = np.random.randint(5,10,20).reshape(4,5)
array2 = np.ones(20).reshape(5,4)
print(array)
[[8 7 8 6 5]
 [5 6 7 7 5]
 [8 6 6 9 9]
 [6 9 8 6 7]]

print(array2)
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]

array3 = np.dot(array,array2)
print(array3)
[[34. 34. 34. 34.]
 [30. 30. 30. 30.]
 [38. 38. 38. 38.]
 [36. 36. 36. 36.]]

转置:

把矩阵A的行和列互相交换所产生的矩阵称为A的转置矩阵 ,这一过程称为矩阵的转置

array = np.random.randint(5,10,20).reshape(4,5)
print(array)
[[9 9 6 6 7]
 [7 8 5 6 7]
 [7 7 8 6 6]
 [5 6 5 8 7]]

print(array.T)
[[9 7 7 5]
 [9 8 7 6]
 [6 5 8 5]
 [6 6 6 8]
 [7 7 6 7]]

图形操作

多维转换成一维:

array = np.random.randint(5,10,20).reshape(4,5)
print(array)
[[7 9 7 7 5]
 [7 7 5 5 7]
 [5 9 8 6 8]
 [5 7 6 7 5]]

print(array.ravel())
[7 9 7 7 5 7 7 5 5 7 5 9 8 6 8 5 7 6 7 5]

将两个同维按行拼接:

numpy.vstack((array,array2)) ==np.column_stack((array2,array))

array = np.random.randint(5,10,20).reshape(4,5)
array2 = np.ones(20).reshape(4,5)
print(array)
[[7 6 7 5 7]
 [5 5 6 8 9]
 [5 9 9 8 7]
 [5 7 5 8 5]]

print(array2)
[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]]

print(np.vstack((array,array2)))
[[7. 6. 7. 5. 7.]
 [5. 5. 6. 8. 9.]
 [5. 9. 9. 8. 7.]
 [5. 7. 5. 8. 5.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]]

将两个同维按列拼接:

numpy.hstack((array,array2))==np.row_stack((array2,array))

rray = np.random.randint(5,10,20).reshape(4,5)
array2 = np.ones(20).reshape(4,5)
print(array)
[[8 5 9 9 5]
 [6 8 5 5 9]
 [8 7 9 9 5]
 [8 6 8 9 6]]

print(array2)
[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]]

print(np.hstack((array,array2)))
[[8. 5. 9. 9. 5. 1. 1. 1. 1. 1.]
 [6. 8. 5. 5. 9. 1. 1. 1. 1. 1.]
 [8. 7. 9. 9. 5. 1. 1. 1. 1. 1.]
 [8. 6. 8. 9. 6. 1. 1. 1. 1. 1.]]

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Christian_yang

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值