一、索引

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. eclipse将项目打包成jar在linux中运行

    最近因为项目需要,做了几个外挂程序做数据传输,涉及到项目打包操作,在此记录一下打包步骤和其中出现的问题. 1.首先右键项目文件夹,点击export,弹出如下选择框,在其中输入jar搜索,并选择JAR ...

  2. 云服务器 使用 onedrive 快速同步

    重大更新:支持微软的onedrive网盘,可以自动实时双向同步数据,也可以多台服务器和网盘之间实时同步数据.新增了一个虚拟环境python367,支持pytorch1.2:-----------微软O ...

  3. 项目打jar包和运行

    打包成jar包和部署,运行. 1.在pom.xml中加入  <packaging>jar</packaging> <groupId>com.demo02</g ...

  4. django Warning: (3135, "'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes

    django连接数据库配置设置如下 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test2', ...

  5. Ubutu安装oracle jdk1.8

    环境: Ubuntu 18.04 LTS x64位 系统用户  hou 工具: jdk-8u171-linux-x64.tar.gz 实验的心 步骤: 第一步: 查看有没有装jdk,按住  ctr+a ...

  6. Java学习笔记(十二)面向对象---内部类

    内部类的访问规则 内部类可以直接访问外部类中的成员,包括私有成员. 因为内部类中持有了一个外部类的引用,格式为:外部类名.this 外部类要访问内部类,必须要建立内部对象. class Outer { ...

  7. 3-在Django中使用使用数据库

    数据库设置 在上一章节中学习了如何创建Django项目,在Django项目中创建web应用,以及如何在Django主程序的URL中引用web应用中的URL.下面来了解如何在Django中使用数据库.D ...

  8. 添加一个layer

    let testLayer = new TestLayer1();this.addChild(testLayer); let TestLayer1 = cc.Layer.extend({ ctor:f ...

  9. LaTeX竖立公式符号

    1.LaTeX技巧668:LaTeX如何实现直立积分号 \usepackage{amsmath,amssymb} \DeclareSymbolFont{EulerExtension}{U}{euex} ...

  10. ORA-01843: not a valid month

    问题描述 ORA-01843: not a valid month oracle数据库插入出现无效的月份