numpy基础操作

numpy基础操作

数据结构数组和向量
import numpy
vector=numpy.array([5,10,15,20]) #向量
A=numpy.array([[1,2],[4,4]])      #数组

#打印维度
print(vector.shape)
print(A.shape)
# (4,)
# (2, 2)

#numpy数组要求传入的值都是同一类型
print(A.dtype)
#int32

numpy导入文件,并以数组的形式存入
delimiter=’,’ 分割符为,
dtype=str 元素类型为str
skip_header=1 跳过首行

#a.txt
#1,2,3
#4,5,6
#7,8,9
date=numpy.genfromtxt('a.txt',delimiter=',',dtype=str,skip_header=1)
print(date)
 print(date[2]) #打印行
print(date[:,1]) #打印列

# [['1' '2' '3']
#  ['4' '5' '6']
#  ['7' '8' '9']]

# ['7' '8' '9']

# ['2' '5' '8']
创建数组以及索引
import numpy as np

# A=np.arange(15)  #创建索引
# A0=np.arange(10,15,2) #和列表调用方式相似,顾头不顾尾,末尾为间隔
# print(A0)
# A1=A.reshape(3,5) #创建数组
# print(A)
# print(A1)
# print(A1.shape)
# print(A1.ndim) #查看维度
# print(A1.size) #查看元素个数

创建全0,全1矩阵:

B=np.zeros((4,4))
print(B)

C=np.ones((2,3,4),dtype=np.int32)
print(C)

# [[0. 0. 0.]
#  [0. 0. 0.]
#  [0. 0. 0.]]
# [[1 1 1]
#  [1 1 1]
#  [1 1 1]]

创建随机矩阵,np.random模块下面还有很多函数,random只是其中一个,注意传入是一个参数,改参数是一个元组(2,3)

D=np.random.random((2,3))
print(D)

# [[0.2696847  0.57543336 0.80743221]
#  [0.40905307 0.90296892 0.168104  ]]

创建一维数组 inspcae(起点,终点,个数)

#linspcae(起点,终点,个数)
print(np.linspace(0,10,6))
# [ 0.  2.  4.  6.  8. 10.]

矩阵的运算

A=np.array([[1,2],[3,4]])
B=np.array([[2,1],[3,4]])
print('A-B\n',A-B)
print('A-1:\n',A-1)
print("A\B \n",A/B)
print('A的3次方:\n',A**3)
print('A<30:\n',A<30)
print('*内积操作')
print(A*B)
print('矩阵相乘')
print(A.dot(B)) #np.dot(A,B)也是代表矩阵相乘
# 
# A-B
#  [[-1  1]
#  [ 0  0]]
# A-1:
#  [[0 1]
#  [2 3]]
# A\B 
#  [[0.5 2. ]
#  [1.  1. ]]
# A的3次方:
#  [[ 1  8]
#  [27 64]]
# A<30:
#  [[ True  True]
#  [ True  True]]
# *内积操作
# [[ 2  2]
#  [ 9 16]]
# 矩阵相乘
# [[ 8  9]
#  [18 19]]

常见函数
A=np.arange(1,5,1)
e的幂操作
print(np.exp(A))
开方
print(np.sqrt(A))
np.floor向下取整
np.ravel()将矩阵转成列表
A.T求转置
np.linalg.inv(a) # 求逆

矩阵拼接

A=np.array([[1,1],[0,1]])
B=np.array([[2,0],[3,4]])
print('横向\n',np.hstack((A,B)))#横向拼接
print('纵向\n',np.vstack((A,B)))#上下拼接
# 横向
#  [[1 1 2 0]
#  [0 1 3 4]]
# 纵向
#  [[1 1]
#  [0 1]
#  [2 0]
#  [3 4]]

矩阵切分:

a=np.floor(10*np.random.random((4,8)))
print(a)
print('-----------横向平均切为4等分---------------')
print(np.hsplit(a,4))
print('-----------横向指定位置切-------------')
print(np.hsplit(a,(3,5)))
print('----------纵切均分2等分-----------------')
print(np.vsplit(a,2))

# [[2. 2. 2. 0. 6. 0. 8. 1.]
#  [3. 6. 8. 0. 4. 2. 0. 0.]
#  [8. 1. 3. 6. 9. 4. 3. 0.]
#  [6. 5. 4. 0. 7. 3. 5. 0.]]
# -----------横向平均切为4等分---------------
# [array([[2., 2.],
#        [3., 6.],
#        [8., 1.],
#        [6., 5.]]), array([[2., 0.],
#        [8., 0.],
#        [3., 6.],
#        [4., 0.]]), array([[6., 0.],
#        [4., 2.],
#        [9., 4.],
#        [7., 3.]]), array([[8., 1.],
#        [0., 0.],
#        [3., 0.],
#        [5., 0.]])]
# -----------横向指定位置切-------------
# [array([[2., 2., 2.],
#        [3., 6., 8.],
#        [8., 1., 3.],
#        [6., 5., 4.]]), array([[0., 6.],
#        [0., 4.],
#        [6., 9.],
#        [0., 7.]]), array([[0., 8., 1.],
#        [2., 0., 0.],
#        [4., 3., 0.],
#        [3., 5., 0.]])]
# ----------纵切均分2等分-----------------
# [array([[2., 2., 2., 0., 6., 0., 8., 1.],
#        [3., 6., 8., 0., 4., 2., 0., 0.]]), array([[8., 1., 3., 6., 9., 4., 3., 0.],
#        [6., 5., 4., 0., 7., 3., 5., 0.]])]

相等矩阵
a=b a,b,值相同,同步变换((改变任意一个,两个值都会一起变),内存地址相等
c=a.view() a,c值相同,同步变换(改变任意一个,两个值都会一起变),内存地址不同,
d=a.copy() d复制a 值相同,不同步变换(改变a,d不变),内存地址不同

argmax 返回最大值的索引

#argmax 返回最大值的索引
a=np.floor(10*np.random.random((4,4)))
print(a)
print('axis=0 表示按列返回最大值的索引')
print(a.argmax(axis=0))
print('axis=1 表示按行返回最大值的索引')
print(a.argmax(axis=1))

# [[1. 8. 4. 2.]
#  [2. 0. 3. 9.]
#  [4. 6. 7. 2.]
#  [0. 7. 2. 5.]]
# axis=0 表示按列返回最大值的索引
# [2 0 2 1]
# axis=1 表示按行返回最大值的索引
# [1 3 2 1]

np.sort() 对矩阵进行排序

#np.sort() 对矩阵进行排序
a=np.floor(10*np.random.random((4,4)))
print(a)
print('axis=0 表示按列排序:')
print(np.sort(a,axis=0))
print('axis=1 表示按行排序:')
print(np.sort(a,axis=1))
print('按索引值排序,将矩阵排序后,列出原来的索引')
print(np.argsort(a[0]))
# [[6. 9. 3. 3.]
#  [7. 5. 4. 5.]
#  [0. 1. 8. 6.]
#  [2. 1. 4. 6.]]
# axis=0 表示按列排序:
# [[0. 1. 3. 3.]
#  [2. 1. 4. 5.]
#  [6. 5. 4. 6.]
#  [7. 9. 8. 6.]]
# axis=1 表示按行排序:
# [[3. 3. 6. 9.]
#  [4. 5. 5. 7.]
#  [0. 1. 6. 8.]
#  [1. 2. 4. 6.]]
# 按索引值排序,将矩阵排序后,列出原来的索引
# [2 3 0 1]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值