import numpy as np

 ########################
# 索引
n1 = np.random.randint(0, 100, 10)
# print(n1)
'''
[68 27 40 11 18 6 61 62 67 31]
'''
# print(n1[5])
'''
6
'''
n2 = np.random.randint(0, 100, (3, 4)) # 创建一个由0到100中随机产生的3行4列的随机数组
# print(n2)
'''
[[46 5 20 78]
[20 2 71 76]
[27 71 19 39]]
'''
# print(n2[0, 1]) # 打印出来第0行的第2个元素
'''
5
'''
#############################
# 切片操作
n3 = np.random.randint(150, size=10) # 创建一个由0到150的随机整数组成的元素个数为10的一维数组
# print(n3)
'''
[ 41 72 15 121 55 76 65 10 101 77]
'''
# print(n3[1:3]) # 取出索引从1到2的值
'''
[72 15]
'''
n4 = np.random.randint(0, 100, (3, 4, 5)) # 创建一个3维数组
# print(n4)
'''
[[[27 80 43 98 87]
[96 99 2 41 86]
[73 83 96 54 26]
[10 76 87 53 47]] [[33 63 98 70 41]
[82 29 80 92 72]
[98 44 51 97 85]
[23 33 2 10 49]] [[86 79 98 76 65]
[42 4 29 38 90]
[ 6 57 92 66 38]
[36 58 25 43 53]]]
'''
# print(n4[1:3])
'''
[[[33 63 98 70 41]
[82 29 80 92 72]
[98 44 51 97 85]
[23 33 2 10 49]] [[86 79 98 76 65]
[42 4 29 38 90]
[ 6 57 92 66 38]
[36 58 25 43 53]]]
'''
# print(n4[1:3, 1:4])
'''
[[[82 29 80 92 72]
[98 44 51 97 85]
[23 33 2 10 49]] [[42 4 29 38 90]
[ 6 57 92 66 38]
[36 58 25 43 53]]]
'''
# print(n4[1:3, 1:4, 1:4])
'''
[[[29 80 92]
[44 51 97]
[33 2 10]] [[ 4 29 38]
[57 92 66]
[58 25 43]]]
'''
###############################
# 变形
n5 = np.random.randint(0, 100, (3, 4))
# print(n5)
'''
[[78 85 94 85]
[16 67 88 71]
[80 12 13 10]]
'''
n6 = n5.reshape(4, 3)
# print(n6)
'''
[[78 85 94]
[85 16 67]
[88 71 80]
[12 13 10]]
'''
## reshape和resize的区别
a = np.array([(1, 2, 3), (4, 5, 6)])
b = a.reshape(3, 2)
# print(b)
'''
[[1 2]
[3 4]
[5 6]]
将a数组的数据由2行3列变成3行2列得到b数组,但是a数组没有发生改变
'''
a.resize(3, 2)
# print(a)
'''
[[1 2]
[3 4]
[5 6]]
a数组由2行3列变成3行2列,此时,a数组的形状发生了改变
'''
# 多维数组降成一维
# print(n6.shape)
'''
(4, 3)
'''
n7 = n6.reshape(4 * 3)
# print(n7)
'''
[23 65 78 78 85 11 44 69 85 10 11 43]
'''
n8 = n6.reshape(-1)
# print(n8)
'''
[23 65 78 78 85 11 44 69 85 10 11 43]
'''
###############################
# 级联(将两个数组连在一起)
'''
注意:1、级联的参数必须是列表:一定要加中括号或小括号
2、维度必须相同
3、形状相符
4、【重点】级联的方向默认是shape这个元组的第一个值所代表的维度方向
5、可以通过axis参数改变级联的方向
'''
n9 = np.random.randint(0, 10, size=(5, 5)) # 创建一个由0到10的正整数的随机数生成的5行5列的随机数组
# print(n9)
'''
[[7 1 9 3 0]
[7 0 9 3 0]
[2 1 4 0 6]
[0 8 2 8 3]
[6 8 8 4 4]]
'''
n10 = np.concatenate((n9, n9)) # 横着级联
# print(n10)
'''
[[7 1 9 3 0]
[7 0 9 3 0]
[2 1 4 0 6]
[0 8 2 8 3]
[6 8 8 4 4]
[7 1 9 3 0]
[7 0 9 3 0]
[2 1 4 0 6]
[0 8 2 8 3]
[6 8 8 4 4]]
'''
n11 = np.concatenate((n9, n9), axis=0) # 竖着级联
# print(n11)
'''
[[7 1 9 3 0]
[7 0 9 3 0]
[2 1 4 0 6]
[0 8 2 8 3]
[6 8 8 4 4]
[7 1 9 3 0]
[7 0 9 3 0]
[2 1 4 0 6]
[0 8 2 8 3]
[6 8 8 4 4]]
'''
n12 = np.concatenate((n9, n9), axis=1) # 横着级联
# print(n12)
'''
[[7 1 9 3 0 7 1 9 3 0]
[7 0 9 3 0 7 0 9 3 0]
[2 1 4 0 6 2 1 4 0 6]
[0 8 2 8 3 0 8 2 8 3]
[6 8 8 4 4 6 8 8 4 4]]
'''
n13 = np.array([
(1, 2, 3),
(7, 8, 9)
], dtype=int)
# print(n13)
'''
[[1 2 3]
[7 8 9]]
'''
n14 = np.hstack(n13) # 将多维数组进行水平级联,处理自己进行维度变更
# print(n14)
'''
[1 2 3 7 8 9]
'''
n15 = np.vstack(n14) # 将一维数组进行垂直级联,处理自己进行维度变更
# print(n15)
'''
[[1]
[2]
[3]
[7]
[8]
[9]]
'''
n16 = np.array([[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]])
# print(n16)
#################################
# 切分
'''
与级联类似,三个函数完成切分工作:
1、np.split
2、np.vsplit
3、np.hsplit
'''
n17 = np.random.randint(0, 150, size=(5, 7))
# print(n17)
n18 = np.split(n17, (1, 3)) # 按行切割数组,此处是分别在行号为1和3前切割
n19 = np.split(n17, (1, 3), axis=0) # 和n18的操作一样
# print(n18)
#####################################
# 副本
'''
所有赋值运算不会为ndarray的任何元素创建副本。赋值后的对象的操作也对原来的对象生效。
'''
n20 = np.random.randint(0, 100, (3, 4))
# print(n20)
'''
[[ 8 83 57 15]
[81 61 0 0]
[56 88 73 91]]
'''
n21 = n20 # 此时,n21和n20是完全相同,并且两者是有联系的。对n21操作的同时也对n22操作了。实际上是两者的指针指向了同一块内存地址
n21[2, 3] = 500
# print(n21)
'''
[[ 8 83 57 15]
[ 81 61 0 0]
[ 56 88 73 500]]
'''
# print(n20)
'''
[[ 8 83 57 15]
[ 81 61 0 0]
[ 56 88 73 500]]
'''
n22 = np.array([[8, 83, 57, 15],
[81, 61, 0, 0],
[56, 88, 73, 91]])
n23 = n22.copy() # 此时n23为n22的副本,与n22完全分隔开了,对n23操作不会影响到n22。实际上是,在内存中新建了一个地方,把n22的值存放在里面,同时n23的指针也指向了新的地址,而n22任然指向原先的。
n23[1, 2] = 500
# print(n23)
'''
[[ 8 83 57 15]
[ 81 61 500 0]
[ 56 88 73 91]]
'''
# print(n22)
'''
[[ 8 83 57 15]
[81 61 0 0]
[56 88 73 91]]
'''
##数组的计算
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 加法
c = a + b
print(c)
'''
[5 7 9]
'''
# 减法
d = a - b
print(d)
'''
[-3 -3 -3]
'''
# 乘法
e = a * b
print(e)
'''
[ 4 10 18]
'''
# 求和
f = np.array([(1, 2, 3), (4, 5, 6)])
print(f.sum())
'''
21
'''
# 按列求和
print(f.sum(axis=0))
'''
[5 7 9]
'''
# 按行求和
print(f.sum(axis=1))
'''
[ 6 15]
'''
# 最小值的值
print(f.min())
'''
1
'''
# 最小值的索引
print(f.argmin())
'''
0
'''
# 最大值的值
print(f.max())
'''
6
'''
print(f.argmax())
'''
5
'''
# 平均值
print(f.mean())
'''
3.5
'''
# 方差
print(f.var())
'''
2.9166666666666665
'''
# 标准差
print(f.std())
'''
1.707825127659933
'''
#############
# 线性代数的运算
# 矩阵内积
np.dot()
# 行列式
np.linalg.det()
# 逆矩阵
np.linalg.inv()
# 多元一次方程组求根
np.linalg.solve()
# 求特征值和特征向量
np.linalg.eig()

numpy的操作的更多相关文章

  1. numpy 基础操作

    Numpy 基础操作¶ 以numpy的基本数据例子来学习numpy基本数据处理方法 主要内容有: 创建数组 数组维度转换 数据选区和切片 数组数据计算 随机数 数据合并 数据统计计算 In [1]: ...

  2. Numpy 数组操作

    Numpy 数组操作 Numpy 中包含了一些函数用于处理数组,大概可分为以下几类: 修改数组形状 翻转数组 修改数组维度 连接数组 分割数组 数组元素的添加与删除 修改数组形状 函数 描述 resh ...

  3. NumPy基础操作

    NumPy基础操作(1) (注:记得在文件开头导入import numpy as np) 目录: 数组的创建 强制类型转换与切片 布尔型索引 结语 数组的创建 相关函数 np.array(), np. ...

  4. NumPy基础操作(3)——代数运算和随机数

    NumPy基础操作(3)--代数运算和随机数 (注:记得在文件开头导入import numpy as np) 目录: NumPy在矩阵运算中的应用 常用矩阵运算函数介绍 编程实现 利用NumPy生成随 ...

  5. Numpy数组操作

    """ Numpy 数组操作 修改数组形状 函数 描述 reshape 不改变数据的条件下修改形状 flat 数组元素迭代器 flatten 返回一份数组拷贝,对拷贝所做 ...

  6. NumPy基础操作(2)

    NumPy基础操作(2) (注:记得在文件开头导入import numpy as np) 目录: 写在前面 转置和轴对换 NumPy常用函数 写在前面 本篇博文主要讲解了普通转置array.T.轴对换 ...

  7. python中numpy矩阵运算操作大全(非常全)!

    python中numpy矩阵运算操作大全(非常全) //2019.07.10晚python矩阵运算大全1.矩阵的输出形式:对于任何一个矩阵,python输出的模板是:import numpy as n ...

  8. [笔记]NumPy基础操作

    学机器学习做点小笔记,都是Python的NumPy库的基本小操作,图书馆借的书看到的,怕自己还了书后忘了,就记下来. 一般习惯导入numpy时使用 import numpy as np ,不要直接im ...

  9. Numpy进阶操作

    目录 1. 如何获取满足条设定件的索引 2. 如何将数据导入和导出csv文件 3. 如何保存和加载numpy对象 4. 如何按列或行拼接numpy数组 5. 如何按列对numpy数组进行排序 6. 如 ...

  10. Python+OpenCV图像处理(三)—— Numpy数组操作图片

    一.改变图片每个像素点每个通道的灰度值 (一) 代码如下: #遍历访问图片每个像素点,并修改相应的RGB import cv2 as cv def access_pixels(image): prin ...

随机推荐

  1. EventLog组件读写事件日志

    使用.Net中的EventLog控件使您可以访问或自定义Windows 事件日志,事件日志记录关于重要的软件或硬件事件的信息.通过 EventLog,可以读取现有日志,向日志中写入项,创建或删除事件源 ...

  2. spring boot入门笔记 (二) - application.properties配置文件

    项目最重要的一个东西,用来定义整个项目的一些东西(端口.访问项目的名称.数据源.日志.集成mybatis等框架.静态资源目录.thymeleaf.热部署等),很重要很重要的. #整个项目的端口号,默认 ...

  3. 使用catsup快速建立个人博客

    一.安装 time: 2016-01-2 20:30 1.使用pip安装catsup:(sudo) pip install catsup 从旧版本升级到新版本:(sudo) pip install c ...

  4. Android Dialog的整个生命周期

    Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...

  5. 润乾报表html代码填报

     由于html和富文本类型的单元格,不能进行可写操作,如果要想填报时填入html代码并且提交后更新就要换了一个方法,通过数据回填的方法. 比如在C3单元格设置html事件(也可以通过一个按钮来触发 ...

  6. cnpm 淘宝镜像设置

    很简单,一句话 npm install -g cnpm --registry=https://registry.npm.taobao.org

  7. ArrayMap代替HashMap

    ArrayMap是一个<key,value>映射的数据结构,它设计上更多的是考虑内存的优化,内部是使用两个数组进行数据存储,一个数组记录key的hash值,另外一个数组记录Value值,它 ...

  8. mysql 日期时间类型 自动转型 及 运算

    日期时间类型自动转型 -- now().字符串.数字转datetime类型 create table t(dt datetime);insert into t values(now());insert ...

  9. PyQt4(简单布局)

    import sys from PyQt4 import QtCore, QtGui app = QtGui.QApplication(sys.argv) widget = QtGui.QWidget ...

  10. 由delete导致的超时已过期问题

    1. 问题 开发人员反映应用程序中一条简单的delete语句执行报“超时已过期”错误.delete语句形式如下: delete * from table_1 where id=@value 2. 分析 ...