NUMPY的学习之路(2)——索引,合并,分割,赋值
一、索引
1.1numpy数组的转置
A=np.arange(3,15).reshape(3,4)
print(A) print(A[2][0])
print(A[2,1])
print(A[2,:])#用冒号代替这一行所有的数 第二行的所有的数
print(A[:,1])#第一列的所有数
# 第一行的从1到3的值
print(A[1,1:3])
结果:

1.2矩阵的转置以及将矩阵转化为array
A=np.arange(3,15).reshape(3,4)
print(A)
for col in A.T:
#迭代a的列就是 迭代A的转置的行
print(col) a=A
print(a.flatten())#返回被改变的array
for item in a.flat:#a.flat 表示的是一个迭代期
print(item)
结果:

二、矩阵的合并
2.1基本上用 concatenate函数对矩阵进行合并
# array的合并
a=np.array([1,1,1])
b=np.array([2,2,2]) c=np.vstack((a,b))#纵向叠加成矩阵
print("纵向叠加:")
print(c)
print("为了之后的合并,我们对array进行reshape")
a=a.reshape(3,1)
print("reshape a:")
print(a)
b=b.reshape(3,1)
print("reshape b:")
print(b)
print("左右合并:")
d=np.hstack((a,b))#左右合并成一个矩阵 如果是序列的话 就是序列+序列=序列
print(d)
#
# # 想把a变成一个竖向的序列
# print(a.reshape(3,1)) # 多个arrayd 纵向或者横向的合并
print("多个矩阵或者array的合并")
c=np.concatenate((a,b,b,a),axis=0)#0是在上下的维度进行合并 按列合并
print("在上下维度合并")
print(c)
c=np.concatenate((a,b,b,a),axis=1)#0是在左右的维度进行合并 按行合并
print("在左右维度合并")
print(c)
结果:
纵向叠加:
[[1 1 1]
[2 2 2]]
为了之后的合并,我们对array进行reshape
reshape a:
[[1]
[1]
[1]]
reshape b:
[[2]
[2]
[2]]
左右合并:
[[1 2]
[1 2]
[1 2]]
多个矩阵或者array的合并
在上下维度合并
[[1]
[1]
[1]
[2]
[2]
[2]
[2]
[2]
[2]
[1]
[1]
[1]]
在左右维度合并
[[1 2 2 1]
[1 2 2 1]
[1 2 2 1]] Process finished with exit code 0
三、矩阵的分割
3.1等量的分割
a=np.array([1,1,1])
b=np.array([2,2,2])
# array的分割
a=np.arange(12).reshape(3,4)
print(a) print(np.split(a,2,axis=1))#要切割的矩阵 分割为几块 分割为行还是列 1表示分割为行(这里把行分为2列)
print(np.split(a,3,axis=0))#按列分为三块 把每一列分为三块 这边最好还是注意下axis 的值和对应的意思
结果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])] Process finished with exit code 0
3.2不等量的分割
a=np.arange(12).reshape(3,4)
print(a)
# 如何进行不等量的分割
a=np.array_split(a,3,axis=1) #这里是把每行元素分成了三份
print(a)
结果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])] Process finished with exit code 0
3.3分割的其它办法
# array的分割
a=np.arange(12).reshape(3,4)
print(a) # 分割的其它办法
print(np.vsplit(a,3))#v代表垂直分割
print(np.hsplit(a,2))#h代表水平分割
结果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
四、array的相关赋值
其实就是就是如果想不相关,但是值是一样,那就用.copy(),这就叫深度复制
# array的相关赋值
a=np.arange(4)
print(a)
b=a#b就是指向ad 引用
c=a
d=b
a[0]=11
print(a)
print(b)
print(b is a)#可以看下是不是同一个a
print(a is d)#发现是同一个维度的
d[1:3]=[22,33]
print(a)#你改了不管其中那一个 都会变的
# 如果我们不想关联起来
b=a.copy()#deep copy 赋值但没有关联
a[3]=44
print(a)
print(b)
结果:
[0 1 2 3]
[11 1 2 3]
[11 1 2 3]
True
True
[11 22 33 3]
[11 22 33 44]
[11 22 33 3]
NUMPY的学习之路(2)——索引,合并,分割,赋值的更多相关文章
- numpy的学习之路(1)——创建数组以及基本运算
需要导入的包 import numpy as np import pandas 一.利用numpy创建数组 1.1创建简单数组 array =np.array([[1,2,3], [2,3,4]]) ...
- [转]Spark学习之路 (三)Spark之RDD
Spark学习之路 (三)Spark之RDD https://www.cnblogs.com/qingyunzong/p/8899715.html 目录 一.RDD的概述 1.1 什么是RDD? ...
- STM32学习之路入门篇之指令集及cortex——m3的存储系统
STM32学习之路入门篇之指令集及cortex——m3的存储系统 一.汇编语言基础 一).汇编语言:基本语法 1.汇编指令最典型的书写模式: 标号 操作码 操作数1, 操作数2,... ...
- 【温故知新】——BABYLON.js学习之路·前辈经验(二)
前言:在上一篇随笔BABYLON.js学习之路·前辈经验(一)中回顾了组内同事们长时间在Babylon开发实践中的总结出的学习之路和经验,这一篇主要对开发中常见的一些功能点做一个梳理,这里只作为温故知 ...
- jQuery学习之路(1)-选择器
▓▓▓▓▓▓ 大致介绍 终于开始了我的jQuery学习之路!感觉不能再拖了,要边学习原生JavaScript边学习jQuery jQuery是什么? jQuery是一个快速.简洁的JavaScript ...
- 应用程序Cache对象到高性能Memcached学习之路
来源:微信公众号CodeL 以下是个人学习之路的简单分享,不足之处欢迎大神们批评指正! 在网站开发的初期,我们没有考虑更多的东西,也没有对缓存进行系统的设计,而是直接使用了应用程序缓存对象Cache, ...
- python学习之路-day2-pyth基础2
一. 模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...
- 学习之路三十九:新手学习 - Windows API
来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...
- OpenGL学习之路(一)
1 引子 虽然是计算机科班出身,但从小对几何方面的东西就不太感冒,空间想象能力也较差,所以从本科到研究生,基本没接触过<计算机图形学>.为什么说基本没学过呢?因为好奇(尤其是惊叹于三维游戏 ...
随机推荐
- LaTeX技巧006:使用pdfLaTeX时,添加PDF文件属性的方法
PDF文件中含有标题.主题.作者.关键字等属性.这些属性,在Acrobat Reader或者Foxit Reader中可以通过”文件”菜单下的”属性”查看,在Acrobat Read中还可以使用Ctr ...
- C# Enumerable
使用Enumerable.Range 打印数字0到9 static void Main(string[] args) { , ); //Range方法获取两个int参数:一个起始数,一个是要生成的结果 ...
- VS 2017——解决运行C++程序后出现(进程xxxx)已退出,返回代码为:0的问题
工具-选项-调试-常规,“调试停止时自动关闭控制台”选项打钩.
- LED Keychain-Ideal For Mass Promotions
Looking for something memorable to remind people of your business or nonprofit? Consider custom LED ...
- jquery tagsinput监听输入、修改、删除事件
个人博客 地址:http://www.wenhaofan.com/article/20181118192458 由于度娘上的根本搜不到对应的操作,连该插件对应的文档介绍都没有,不得已debug了源码才 ...
- .gitignore文件说明-git提交时可忽略的文件
在我们平时做项目时,总有一些文件不想提交到服务器的版本管理上 这时就要设置相应的忽略规则,来忽略这些文件的提交 规则 作用/mtk 过滤整个文件夹*.zip 过滤所有.zip文件/mtk/do.c 过 ...
- Github中进行fork后,原仓库更新了如何与原仓库同步
我们经常在Github中Fork别人优秀的项目(在自己的GitHub下面生成一个repository),如果原仓库作者或组织更新仓库,此时你Fork的项目并不会更新,如果我们想要更新操作,该如何操作? ...
- ROS2GO 与WIN10 双系统安装
关于ROS2GO的一些心得: 我是一个ROS的探索者,在接触ROS一段时间后,意外发现了一个关于ROS2GO的信息,是天之博特的微信公众号发表的.简单来说ROS2GO就是一个装了ROS的Ubuntu系 ...
- 使用wsgiref手撸web框架
模板 前言 要说到应用程序,就不得不提的就是cs架构和BS架构 所谓的cs架构就是client端和server端,就像我们的电脑上的qq,微信等应用程序 bs架构就是浏览器端和server端,我们不需 ...
- AcWing 12. 背包问题求具体方案
//f[i][j]=max(f[i-1][j],f[i-1][j-v[i]]+w[i]) #include <iostream> using namespace std; ; int n, ...