pyhton numpy库的学习

1.Numpy核心数据结构:ndarray

ndarray是由同一种类型的元素组成的N维数组

1.1 ndarray的创建

主要有以下几个函数进行创建:

array()

zeros():全零数组

ones():全1数组

empty():创建未初始化的数组

1.1.1通过array()创建

(1)一维 a = np.array([1,2,3,4])

(2)二维

b = np.array([
     [1,2,3,4],
     [5,6,7,8]
])

(3)三维

c = np.array([
  [
    [1,2,3,4],
    [5,6,7,8]
  ],
  [
    [9,10,11,12],
    [13,14,15,16]
  ]
])

1.1.2通过zeros()  ones()  empty()创建

a = zeros((3,2))

array([[0., 0.],
       [0., 0.],
       [0., 0.]])

b = ones((3,2))

array([[1., 1.],
       [1., 1.],
       [1., 1.]])

c = np.empty((2,3,4))
array([[[ 7.15526851e-312,  6.22522714e-322,  2.12199579e-312,
         -1.68416096e-310],
        [ 7.15570007e-312, -4.47213389e-313,  7.15541423e-312,
          8.20148972e-322],
        [ 0.00000000e+000, -1.73848404e-310,  7.15568433e-312,
         -4.47204282e-313]],

       [[ 7.15526851e-312,  6.66988622e-322,  2.12199579e-312,
         -1.79280714e-310],
        [ 0.00000000e+000,  4.47214284e-313,  7.15542855e-312,
          8.25089629e-322],
        [ 0.00000000e+000, -1.84713021e-310,  0.00000000e+000,
         -4.47219864e-313]]])
1.1.3其他创建方式(1)arange函数   区间,左闭右开  np.arange(20) #只写一个参数,默认起始值为0,步长为1
  array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19])

  np.arange(10,20)  #写两个参数,起始值和终止值,默认步长为1
    array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])

   np.arange(10,20,2) #写两个参数,起始值和终止值,步长
    array([10, 12, 14, 16, 18])
(2)linspace函数  区间,全闭,参数:起始值、终止值、元素个数

  np.linspace(0,10,5)
    array([ 0. ,  2.5,  5. ,  7.5, 10. ])

(3)logspace函数  起始值以10为底,n次方,元素个数
  np.logspace(0,2,5)   #n为0到2的等比数列
  array([1., 3.16227766, 10.,31.6227766 ,100.])
(4)随机数random()  np.random.random() 1.2 ndarray属性1.3 ndarray修改形状a = np.arange(0,20,2)
array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
a.reshape(2,-1) #修改数组形状,未知行数或列数使用-1表示
array([[ 0,  2,  4,  6,  8],
       [10, 12, 14, 16, 18]])

1.4 数组的乘法和矩阵的乘法
 对应元素相乘:arr1 * arr2

矩阵的乘法(点积、数量积):arr1.dot(arr2) 或者 np.dot(arr1,arr2)1. 5 索引

 1.5.1 多维数组的索引

a = np.array([
    [
        [1,2,3,4],
        [5,6,7,8]
    ],
    [
        [9,10,11,12],
        [13,14,15,16]
    ],
    [
        [8,5,6,2],
        [4,3,2,1]
    ]
])a[1,1,3]    #16a[1][1][3]  #16a[1:2]array([[[ 9, 10, 11, 12],
        [13, 14, 15, 16]]])
a[1,1:3,1] #array([14])

1.5.2 布尔类型索引

利用布尔类型的数组进行据索引,最终返回结果是对应索引数组中数据为True位置的值。

1.5.3 花式索引

利用整数数组进行索引

arr = np.arange(32).reshape(8,4)
arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19],
       [20, 21, 22, 23],
       [24, 25, 26, 27],
       [28, 29, 30, 31]])

#获取第(0,0)、(3,3)、(5,2)这三个索引位置的数据
print(arr[[0,3,5],[0,3,2]])
[ 0 15 22]

#获取第0、3、5行的第0、3、2列数据
arr[np.ix_([0,3,5],[0,3,2])]
array([[ 0,  3,  2],
       [12, 15, 14],
       [20, 23, 22]])

1.6 数组转置 transpose()或T属性

1.7 ndarray常用函数

1.7.1聚合函数:mean max min std

1.7.2 np.where函数

where的三个参数,第一个是判断条件,第二个是为真时取值,第三是为假时取值

xarr = np.array([1,2,3,4,5])
yarr = np.array([-1,-2,8,9,10])
condition = xarr > yarr
result  = np.where(condition,xarr,yarr)
result
array([ 1,  2,  8,  9, 10])
arr = np.array([
    [1,2,np.NaN,4],
    [4,5,6,np.NaN],
    [7,8,9,np.inf],
    [np.inf,np.e,np.pi,4]
])
condition = np.isnan(arr) | np.isinf(arr)
result = np.where(condition,0,arr)
result
array([[1.        , 2.        , 0.        , 4.        ],
       [4.        , 5.        , 6.        , 0.        ],
       [7.        , 8.        , 9.        , 0.        ],
       [0.        , 2.71828183, 3.14159265, 4.        ]])

  

1.7.3 np.unique函数,去重

arr = np.array([‘a‘,‘f‘,‘c‘,‘d‘,‘e‘,‘a‘,‘b‘])
for a in arr:
   print(a,end=" ")
a b c d e a b 

arr2 = np.unique(arr)
for a in arr2:
    print(a,end=" ")
a b c d e f 

 


 

原文地址:https://www.cnblogs.com/weiququ/p/9123821.html

时间: 2024-10-09 20:11:08

pyhton numpy库的学习的相关文章

Numpy库的学习(一)

今天来学习一下Python库中,支持高级大量的维度数组与矩阵运算的神奇的Numpy库 Numpy同时也对数组运算提供大量的数学函数,对于大量计算运行效率极好 是大量机器学习框架的基础库 废话不多说,直接开整 Numpy中最核心的结构就是ndarray数组 Numpy中定义的最重要的对象是成为ndarray的N维数组类型 它描述相同类型的元素集合.可以使用基于零的索引访问集合中的项目.大部分的数组操作仅仅是修改元数据部分,而不改变其底层的实际数据. 数组的维数称为秩,简单来说就是如果你需要获取数组

Numpy库的学习(五)

今天继续学习一下Numpy库,废话不多说,整起走 先说下Numpy中,经常会犯错的地方,就是数据的复制 这个问题不仅仅是在numpy中有,其他地方也同样会出现 import numpy as np a = np.arange(12) b = a print(b is a) b.shape = 3,4 print(a.shape) print(id(a)) print(id(b)) 先看看这段代码,我们随便建立了一个numpy数组 然后我想把a这个值,赋值给b,很简单的操作,b = a 那么我们打

数据分析与展示——NumPy库入门

这是我学习北京理工大学嵩天老师的<Python数据分析与展示>课程的笔记.嵩老师的课程重点突出.层次分明,在这里特别感谢嵩老师的精彩讲解. NumPy库入门 数据的维度 维度是一组数据的组织形式.数据维度就是在数据之间形成特定关系表达多种含义的一个概念. 一维数据: 一维数据由对等关系的有序或无序数据构成,采用线性方式组织.对应列表.数组和集合等概念. 列表和数组:一组数据的有序结构. 区别: 列表:数据类型可以不同 数组:数据类型相同 二维数据: 二维数据由多个一维数据构成,是一维数据的组合

&lt;class &#39;numpy.ndarray&#39;&gt;的学习

在学习opencv-python的时候,给出图片地址再调用cv2.imread("地址"),发现出创建的是numpy类型的ndarray对象,用来存放多维数组的对象 # 导入cv2模块 import cv2 # 给出本地图片的地址 img_dir="D:/360Downloads/test.jpg" # 创建numpy类型的ndarray对象,存放多维数组的对象 img=cv2.imread(img_dir) # <class 'numpy.ndarray'&

数据分析之Numpy库入门

1.列表与数组 在python的基础语言部分,我们并没有介绍数组类型,但是像C.Java等语言都是有数组类型的,那python中的列表和数组有何区别呢? 一维数据:都表示一组数据的有序结构 区别: 列表:数据类型可以不同,如:[3.1413,'pi',3.1404,[3.1402,2.34],'3.2376'] 数组:数据类型相同 .如[3.14,34.34,3433.3,343.23] 二维数据:二维数据由多个一维数据构成,是一维数据的集合形式!表格是典型的二维数据! 注意:表格的表头,可以是

标准模板库(STL)学习探究之vector容器

标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据.为了可以使用vector,必须在你的头文件中包含下面的代码:#include <vector>构造函数. Vectors 包含着一系列连续存储的元素,其行为和数组类

gdal库的学习和使用

1.windows下的编译 1.1.解压后打开nmake.opt,设置GDAL_HOME 1.2.进入vs的command promot,进入正常的那个即可,64位的没试过,可以参考gdal官网 1.3.nmake /f makefile.vc 1.4.nmake /f makefile.vc install 1.5.nmake /f makefile.vc devinstall 2.打开文件 #include "gdal_priv.h" #include "cpl_conv

C++的开源跨平台日志库glog学习研究(一)

作为C++领域中为数不多的好用.高效的.跨平台的日志工具,Google的开源日志库glog也算是凤毛麟角了.glog 是一个C++实现的应用级日志记录框架,提供了C++风格的流操作. 恰巧趁着五一我也学习研究了这个glog库,写个总结如下.走过路过的的各位牛人.高手可以忽略这篇文章了. 从code.google.com下载源码(在这里),在Visual Studio 2010中打开工程,如下: 可见只有四个工程,其中libglog和libglog_static分别是Windows下的动态库和静态

C++的开源跨平台日志库glog学习研究(二)--宏的使用

上一篇从整个工程上简单分析了glog,请看C++的开源跨平台日志库glog学习研究(一),这一篇对glog的实现代码入手,比如在其源码中以宏的使用最为广泛,接下来就先对各种宏的使用做一简单分析. 1. 日志输出宏 这里我们以一条最简单的日至输出为例说明: LOG(WARNING) << "This is a warning message"; 这里LOG是一个宏,其定义如下(logging.h line 487): #define LOG(severity) COMPACT