1. 数组的创建

  2. 数组的访问

  3. 数组的合并

  4. 数组的分割

数组创建

>>> import numpy as np

创建一维数组
>>> x = np.arange(10)
>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 创建二维数组
>>> X = np.arange(10).reshape(2, 5)
>>> X
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]]) 查看数组为维度
>>> x.ndim
1
>>> X.ndim
2 查看数组的形状
>>> X.shape
(2, 5)

数组访问

>>> X
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]]) >>> X[0]
array([0, 1, 2, 3, 4]) >>> X[1,1]
6 >>> X[0:4]
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]]) >>> X[0:1]
array([[0, 1, 2, 3, 4]]) >>> X[0:2]
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]]) >>> X[:2, :2]
array([[0, 1],
[5, 6]]) >>> X[:, 1]
array([1, 6]) >>> X[1, :]
array([5, 6, 7, 8, 9]) 创建子数组
>>> subX = X[:2, :2]
>>> subX
array([[0, 1],
[5, 6]]) 子数组修改
>>> subX[0, 0] = 100
>>> subX
array([[100, 1],
[ 5, 6]])
>>> X
array([[100, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9]]) 如何使子数组的修改不影响原数组
>>> subX = X[:2, :2].copy()
>>> subX
array([[100, 1],
[ 5, 6]])
>>> subX[0, 1] = 200
>>> subX
array([[100, 200],
[ 5, 6]])
>>> X
array([[100, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9]])

数组形状

>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> x.reshape(2, 5)
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
>>> x.reshape(5, 2)
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
>>> A = x.reshape(5, 2)
>>> A
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
>>> x.reshape(10, -1)
array([[0],
[1],
[2],
[3],
[4],
[5],
[6],
[7],
[8],
[9]])
>>> x.reshape(-1, 10)
array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

数组合并

>>> a = np.array([1,2,3])
>>> b = np.array([4,5,6])
>>> a,b
(array([1, 2, 3]), array([4, 5, 6])) >>> np.concatenate([a,b])
array([1, 2, 3, 4, 5, 6]) >>> c = np.array([7,8,9])
>>> np.concatenate([a,b,c])
array([1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> A = np.array([[1,2,3],[4,5,6]])
>>> np.concatenate([A, A])
array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3],
[4, 5, 6]])
>>> np.concatenate([A, A], axis=0)
array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3],
[4, 5, 6]])
>>> np.concatenate([A, A], axis=1)
array([[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6]]) 不能合并两个维度不同的数组
>>> np.concatenate([A, a])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<__array_function__ internals>", line 5, in concatenate
ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s) 如何忽略维度问题
>>> np.concatenate([A, a.reshape(1, -1)])
array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3]])
>>> A,a
(array([[1, 2, 3],
[4, 5, 6]]), array([1, 2, 3]))
>>> A.shape, a.shape
((2, 3), (3,))
>>> np.vstack([A, a])
array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3]])
>>> a = np.array([[6],[6]])
>>> a
array([[6],
[6]])
>>> np.hstack([A, a])
array([[1, 2, 3, 6],
[4, 5, 6, 6]])

数组分割

>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> x1,x2,x3 = np.split(x, [3,7])
>>> x1,x2,x3
(array([0, 1, 2]), array([3, 4, 5, 6]), array([7, 8, 9]))
>>> A = np.arange(16).reshape(4,4)
>>> A
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>> A1,A2 = np.split(A, [2])
>>> A1,A2
(array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11],
[12, 13, 14, 15]]))
>>> A1,A2 = np.split(A,[2],axis=1)
>>> A1,A2
(array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]), array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]]))
>>> A1, A2 = np.vsplit(A, [2])
>>> A1,A2
(array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11],
[12, 13, 14, 15]]))
>>> A1,A2 = np.hsplit(A,[2])
>>> A1,A2
(array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]), array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]]))

01.Numpy数组的基本应用的更多相关文章

  1. numpy数组、向量、矩阵运算

    可以来我的Github看原文,欢迎交流. https://github.com/AsuraDong/Blog/blob/master/Articles/%E6%9C%BA%E5%99%A8%E5%AD ...

  2. 01. Numpy模块

    1.科学计算工具-Numpy基础数据结构 1.1.数组ndarray的属性 NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成:① 实际的数据② 描述这些数据的元数据 注意数组格式, ...

  3. 21、numpy数组模块

    一.numpy简介 numpy官方文档:https://docs.scipy.org/doc/numpy/reference/?v=20190307135750 numpy是Python的一种开源的数 ...

  4. 数据分析01 /numpy模块

    数据分析01 /数据分析之numpy模块 目录 数据分析01 /数据分析之numpy模块 1. numpy简介 2. numpy的创建 3. numpy的方法 4. numpy的常用属性 5. num ...

  5. numpy数组的操作

    numpy - 介绍.基本数据类型.多维数组ndarray及其内建函数 http://blog.csdn.net/pipisorry/article/details/22107553 http://w ...

  6. Numpy数组对象的操作-索引机制、切片和迭代方法

    前几篇博文我写了数组创建和数据运算,现在我们就来看一下数组对象的操作方法.使用索引和切片的方法选择元素,还有如何数组的迭代方法. 一.索引机制 1.一维数组 In [1]: a = np.arange ...

  7. 操作 numpy 数组的常用函数

    操作 numpy 数组的常用函数 where 使用 where 函数能将索引掩码转换成索引位置: indices = where(mask) indices => (array([11, 12, ...

  8. NumPy 超详细教程(1):NumPy 数组

    系列文章地址 NumPy 最详细教程(1):NumPy 数组 NumPy 超详细教程(2):数据类型 NumPy 超详细教程(3):ndarray 的内部机理及高级迭代 文章目录 Numpy 数组:n ...

  9. NumPy数组对象

    1.创建NumPy数组 import numpy as np # 创建3*2*4的三维数组 a = np.arange(24).reshape(3, 2, 4) # 打印三维数组的所有元素 print ...

随机推荐

  1. 设计模式c++(4)——装饰者模式

    装饰者模式动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 装饰者模式的整体思路比较简单,就是在类的实例中包含一个同类型的成员变量,然后用实例来装饰该成员变量.这样就就可 ...

  2. 并发编程(Process对象的join方法)(

    一. Process对象的join方法 在主进程运行过程中如果想并发地执行其他的任务,我们可以开启子进程,此时主进程的任务与子进程的任务分两种情况 情况一:在主进程的任务与子进程的任务彼此独立的情况下 ...

  3. 前、中、后序遍历随意两种是否能确定一个二叉树?理由? && 栈和队列的特点和区别

    前序和后序不能确定二叉树理由:前序和后序在本质上都是将父节点与子结点进行分离,但并没有指明左子树和右子树的能力,因此得到这两个序列只能明确父子关系,而不能确定一个二叉树. 由二叉树的中序和前序遍历序列 ...

  4. SPF POJ - 1523 割点+并查集

    题意: 问你这个图中哪个点是割点,如果把这个点去掉会有几个子网 代码: 1 //给你几个点,用着几个点形成了一个图.输入边形成的图,问你这个图中有多少个割点.每一个割点去掉后会形成几个强连通分量 2 ...

  5. Power Strings POJ - 2406 后缀数组

    Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc&quo ...

  6. Educational Codeforces Round 95 (Rated for Div. 2) A. Buying Torches (数学)

    题意:刚开始你有一个木棍,造一个火炬需要一个木根和一个煤块,现在你可以用一个木棍换取\(x\)个木棍,或者\(y\)根木棍换一个煤块,消耗一次操作,问最少需要操作多少次才能造出\(k\)把火炬. 题解 ...

  7. Windows Terminal 更换主题

    1. 打开设置,是个json文件 2. 在此处获取主题配置:https://atomcorp.github.io/themes/ 3.将主题配置粘贴到schemes节点(可以增加N个) 4.配置每个命 ...

  8. Python——Django框架——Form框架

    一.引入Form包 from django import forms 二.定义规则 class Forms_Login(forms.Form): 用户名 = forms.CharField(requi ...

  9. Redis 主从复制(Replication)

    为了保证服务的可用性,现代数据库都提供了复制功能,同时在多个进程中维护一致的数据状态. Redis 支持一主多从的复制架构,该功能被简化成了一条 SLAVEOF 命令,下面通过条命令来解析 Redis ...

  10. leetcode一些细节

    取数组中点时不要写 int mid = (left + right) // 2;,「这么写有一个问题:数值越界,例如left和right都是最大int,这么操作就越界了,在二分法中尤其需要注意!」 所 ...