前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python-numpy

python-numpy

作者头像
Dean0731
发布2020-05-08 15:34:55
4950
发布2020-05-08 15:34:55
举报
# 常用库numpy
import numpy as np
array1 = np.array([1,2,3,4])
print(array1)  # [1 2 3 4]
array2 = np.array([
    [1,2,6,9],
    [3,4,8,9],
    [3,5,9,9],
    [3,5,7,9],
])
print(array2)
"""
[[1 2]
 [3 4]]
"""
print(array1.shape) # (4,)  显示列的数量
print(array2.shape) # (2,2) 显示行,列
print(array1.dtype) # int32
print(array2.dtype) # float64   字符串类型是S1 类型
array2.astype(float)
# 含有一个浮点就是浮点,含有一个字符就是字符类型
print(array2==2)
"""
[[False  True]
 [False False]]
"""
print(array2.min()) # 返回矩阵最小值
# =================================
# 从文本数据获取数据 逗号分开,按照字符类型,   返回 记录组成的矩阵
# np.genfromtxt("path",delimiter=",",dtype=str)
# 从矩阵中取值 x[m,n]

# ==========================
# 矩阵切片 x[:,0:2] 获取矩阵的所有行,0-2列
print(array2)
vec = array2==9
print(vec)
array2[vec]=100
print(array2[vec]) # [9 9 9 9 9] 显示了矩阵中所有的

# ========================================================================================
(array1==10) & (array2==5) # 返回矩阵, 符合 以前学过的 或,与
# 常用函数
print(array2.sum(axis=1)) # [109 115 208 115]  每行的总和
print(array2.sum(axis=0)) # [ 10  16 121 400]  每列的总和
matrix = np.arange(12) # [ 0  1  2  3  4  5  6  7  8  9 10 11]
print(matrix)
print(matrix.reshape(3,4))  # 转为3行 2列矩阵,注意元素个数不能多不能少
# 空矩阵
kong = np.zeros((3,4))  # 创建3行4列全为0的矩阵  float类型
print(kong)
# 指定值的矩阵
defau = np.ones((2,3,4),dtype=np.int) # 三维 3行 4列, 2 个   int 类型
print(defau)
# 从10开始 30 步长为5
np.arange(10,30,5)  # [10,15,20,25]  不包含30
# 随机模块
np.random.random((2,3)) # 两行三列 -1 到 1之间的
# 在区间内随机取值
np.linspace(0,9,20) # 0到9之间随机20个值, 包含0,9
# 对于shape 相同的
#      就是对应位置相减
#       对应位置相乘(A*B)  shape不变
# 对于shape不同
#      如矩阵减去1 表示所有位置减1
#       array1**2 表示所有元素平方
#       A.dot(B)或np.dot(A,B) 真正的矩阵乘法,需要符合 可相乘的条件
# e的n次幂 np.exp(n)
# 舍弃小数
print(np.floor([1,2.4,0.736,-987,15])) # [   1.    2.    0. -987.   15.] 变为浮点整数
# matrix.ravel()   矩阵 拉平   按照第一行接 第二行方式
# array2.shape = (8,2) 修改矩阵的形状
# array2.reshape(8,-1) 与上边功能相同 8行  此时 列数自动计算
# np.hstack(矩阵1,矩阵2)  横着拼接  ,注意行相同
# np.vstack(矩阵1,矩阵2)  垂直拼接,注意列相同
# np.hspilt(矩阵,n)  水平切分 分为n份
#   np.hspilt(矩阵,(m,n))  水平切分 从m列后切开,从n列后切开
# 垂直切开与水平类似

# ==============================
# np 中的向量,矩阵都是引用对象,赋值时是引用传递,
#   浅复制 a=b 此时a,b指向同一个  a,b完全相同 ,修改一个,另一个变化
#   c = b.view() c is b  --->Flase 修改shape 另一个不会变,但修改某个值,都会变化
#       即b,与b.view() 公用数值部分 ,只有部分相同,其他都不同
#  d = b.copy() d用b的值进行初始化,创建的d,创建后,两者每关系了
# =========================================
max_line = array2.argmax(axis=0) # 每列进行比较 [x,y,z] x矩阵第一列中最大的元素的下标,y为第二列
array2[max_line,np.arange(array2.shape[1])] # 输入 那些最大值所在行,以及列数  最后返回矩阵中 每列的最大值

three = np.tile([[1,2],[3,4]],(2,3)) # 以 array2 行变为原来2倍,列变为3倍
"""
[[1 2]
 [3 4]]
[[1 2 1 2 1 2]
 [3 4 3 4 3 4]
 [1 2 1 2 1 2]
 [3 4 3 4 3 4]]
"""
np.sort(array2,axis=1) # 返回一个矩阵 ,是array2 矩阵所有行排序后的
array2.sort(axis=1) # 在矩阵上直接修改

array4 = np.array([23,45,67,1])
index = np.argsort(array4) # [3 0 1 2] 返回的是 array4 排序(默认升序)后 对应数值原来的下标
# 排序应为 [1 23 45 67]   3就是1 原来的索引,0是23原来的索引
# 此时
print(array4[index]) # 返回的其实就是 排序后的矩阵[1 23 45 67]
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档