数组的计算与切片

‘矩阵’的计算
1列表的计算,相加为列表元素直接相加,数组则有所不同

 list1  = [[1,2,3,4],[1,2,3,4]]
 list2 = [[2,3,4,5],[2,3,4,5]]
 print(list1+list2)
 结果:
 [[1, 2, 3, 4], [1, 2, 3, 4], [2, 3, 4, 5], [2, 3, 4, 5]]

注意:对位运算,注意shape
一维数组与一维数组:保证元素的个数必须相同
多维数组与多维数组:注意形状,相同的维度大小和维度个数

import numpy as np
s1 = np.array(list1)
s2 = np.array(list2)
s1 = s1*10
print('s1',s1)
print('*'*100)
print('s2',s2)
print('*'*100)
print(s1+s2)
print('*'*100)
print(s1*s2)

运算结果:
s1 [[10 20 30 40]
[10 20 30 40]]
****************************************************************************************************
s2 [[2 3 4 5]
[2 3 4 5]]
****************************************************************************************************
[[12 23 34 45]
[12 23 34 45]]
****************************************************************************************************
[[ 20  60 120 200]
[ 20  60 120 200]]

2一维数组和多维数组的问题:

 s3 = np.array([1,2,3])
print(s3)
print(s6.shape)
[1 2 3]
(1, 3)
s4 = np.array(range(1,13))
s5 = s4.reshape(4,3)
print(s5)
print(s5.shape)
 [[ 1  2  3]
  [ 4  5  6]
  [ 7  8  9]
  [10 11 12]]
 (4, 3)
其中s3*s5的结果为:	
[[ 1  4  9]
 [ 4 10 18]
 [ 7 16 27]
 [10 22 36]]

3维度转置的问题

转置之后,维度个数不变,但是大小改变
	 s7=np.arange(12).reshape((4,3))
	 print(s7)
	 print(s7.T)
	 [[ 0  1  2]
      [ 3  4  5]
      [ 6  7  8]
      [ 9 10 11]]
 
    [[ 0  3  6  9]
     [ 1  4  7 10]
     [ 2  5  8 11]]

4、一维数组的切片与索引
s1=np.array([1,2,3,4,5,6])
(1)索引类似列表,下标从0 开始

		s1[0]        s1[1]       s1[2]       s1[4] 
结果:     1            2          3            5

(2)全部截取
s1[:]
结果:[1 2 3 4 5 6]
s1[1:]
结果:[2 3 4 5 6]
s1[::2] 步长为2
结果:[1 3 5]

5、多维数组的切片
(1)取单值:
s2=np.array(range(0,16)).reshape((4,4))
s2[1][2]
s2[1,2]
两者均为 索引为1的行 和索引为2的列的值
(2)取多个值(取数组的问题)
取连续的多行多列

 原来的数组s2:
        [[ 0  1  2  3]
		 [ 4  5  6  7]
		 [ 8  9 10 11]
		 [12 13 14 15]]
    s2[:][1:3]
   结果取值为:第二行第三行的全部值
       [[ 4  5  6  7]
		[ 8  9 10 11]]
	截取不连续的多行多列
   1:print(s2[::2,2:]):
    [[ 2  3]
	 [10 11]]
	 
   2:
   print(s2)
   print(s2[[0,2]][:,2:4])
    [[ 0  1  2  3]
	 [ 4  5  6  7]
	 [ 8  9 10 11]
	 [12 13 14 15]]
	 
	[[ 2  3]
	 [10 11]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值