一、索引

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)——索引,合并,分割,赋值的更多相关文章

  1. numpy的学习之路(1)——创建数组以及基本运算

    需要导入的包 import numpy as np import pandas 一.利用numpy创建数组 1.1创建简单数组 array =np.array([[1,2,3], [2,3,4]]) ...

  2. [转]Spark学习之路 (三)Spark之RDD

    Spark学习之路 (三)Spark之RDD   https://www.cnblogs.com/qingyunzong/p/8899715.html 目录 一.RDD的概述 1.1 什么是RDD? ...

  3. STM32学习之路入门篇之指令集及cortex——m3的存储系统

    STM32学习之路入门篇之指令集及cortex——m3的存储系统 一.汇编语言基础 一).汇编语言:基本语法 1.汇编指令最典型的书写模式: 标号 操作码        操作数1, 操作数2,... ...

  4. 【温故知新】——BABYLON.js学习之路·前辈经验(二)

    前言:在上一篇随笔BABYLON.js学习之路·前辈经验(一)中回顾了组内同事们长时间在Babylon开发实践中的总结出的学习之路和经验,这一篇主要对开发中常见的一些功能点做一个梳理,这里只作为温故知 ...

  5. jQuery学习之路(1)-选择器

    ▓▓▓▓▓▓ 大致介绍 终于开始了我的jQuery学习之路!感觉不能再拖了,要边学习原生JavaScript边学习jQuery jQuery是什么? jQuery是一个快速.简洁的JavaScript ...

  6. 应用程序Cache对象到高性能Memcached学习之路

    来源:微信公众号CodeL 以下是个人学习之路的简单分享,不足之处欢迎大神们批评指正! 在网站开发的初期,我们没有考虑更多的东西,也没有对缓存进行系统的设计,而是直接使用了应用程序缓存对象Cache, ...

  7. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  8. 学习之路三十九:新手学习 - Windows API

    来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...

  9. OpenGL学习之路(一)

    1 引子 虽然是计算机科班出身,但从小对几何方面的东西就不太感冒,空间想象能力也较差,所以从本科到研究生,基本没接触过<计算机图形学>.为什么说基本没学过呢?因为好奇(尤其是惊叹于三维游戏 ...

随机推荐

  1. IT人的乐趣与价值

    it人员“偷摸”实现个人潜在价值的一些方向.    1.做一名站长.现在做一个个人博客或者CMS系统,都可以从网上找到相关开源的程序.花十几块钱申请个域名,再花个百来块租个空间,你就具备了当站长的外界 ...

  2. win10子系统ubuntu内的nginx启动问题

    需用sudo启动,密码是windows密码.

  3. C++11 新用法

    基于哈希的 map 和 set 简述 基于哈希的 map 和 set ,它们分别叫做 unordered_map, unordered_set .数据分布越平均,性能相较 map 和 set 来说提升 ...

  4. SpringBoot整合WEB开发--(七)注册拦截器

    1.创建一个拦截器类实现HandlerInterceptor接口,重写其中的3个方法,这拦截器中方法的执行顺序为:preHandle--Controller--postHandle--afterCom ...

  5. CodeForce 377 A mazes(dfs+连通性问题)

    Pavel 喜欢网格迷宫.一个网格迷宫是一个 n × m 的长方形迷宫,其中每个单元格要么是空白的,要么是墙体.您可以从一个单元格走到另一个单元格,只要两个单元格均是空白的,且拥有一条公共的边. Pa ...

  6. [bzoj1905] [ZJOI2007] Hide 捉迷藏

    题意简述 给定一棵 \(n\) 个点的树,起初每个点都为黑色. 2种操作,要么改变某个点的颜色(由黑至白或由白至黑),要么询问距离最远的两个黑点间的距离. 共 \(m\) 次操作. \(n\leq 1 ...

  7. Mike and strings

    Mike has n strings s1, s2, ..., sn each consisting of lowercase English letters. In one move he can ...

  8. linux下部署Mono oracle配置,oracle客户端安装

    一.Mono,apache安装,配置网站(以 centos 7 +apache 2为例): 安装教程以官网的教程为追,百度来的多少有版本问题. mono官网连接: 1. Mono的安装:https:/ ...

  9. 载 js验证密码 必须由大小写字母、数字和特殊字符组成

    转自:https://blog.csdn.net/weixin_43824935/article/details/93601064 密码长度8-16位 必须由大写字母,小写字母,数字,特殊符号组成 正 ...

  10. Windows7自定义主题

    一.破解主题限制 Windows系统默认只能允许用户使用系统自带主题(非壁纸),即使用户安装了第三方主题,Windows也会限制很多地方,导致第三方主题用起来怪怪的. 故此,想要一个可以自定义主题的W ...