学习链接:http://www.runoob.com/numpy/numpy-tutorial.html

官方链接:https://numpy.org/devdocs/user/quickstart.html

简介:

numPy是python语言的一个扩展库,是一个运行非常快的数学库,主要用于数组计算。它支持大量的维度与数据运算还针对数组运算提供大量的数学函数库。它包含:一个强大的n维数组对象ndarray、广播功能函数、整合c/c++/fortran的工具、线性代数、傅里叶变化与随机数生成等功能

numPy应用

  numpy通常与SciPy(Scientific Python)和Matplotlib(绘图库)配合使用,来代替MatLab,构成为强大的科学计算环境,帮助我们通过Python学习数据科学或者机器学习

安装:

$pip install numPy

  测试安装成功:

>>> from numpy import *    #导入numpy库
>>> eye(4) #生成对角矩阵
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])

使用

*)numpy.linspace()

  参考链接:https://numpy.org/devdocs/reference/generated/numpy.linspace.html?highlight=linspace#numpy.linspace

  像python中的range一般,返回有指定的间隔产生的均匀间隔的数组,值得注意的是有dtype这个参数

*)numpy. arange()

  参考链接:https://numpy.org/devdocs/reference/generated/numpy.arange.html?highlight=arange#numpy.arange

  值在半开区间里被生成[start,stop),对于int类型的参数,函数等同于python中的range,但是返回一个ndarray而不是list

  但是对于非整形的step参数,每次返回的结果往往不一致,对于这种情况,选择numpy.linspace()更好

*)numpy.zeros()

  参考链接:https://numpy.org/devdocs/reference/generated/numpy.zeros.html?highlight=zeros#numpy.zeros

  返回由0填充的数组,能指定填充的0的dtype

*)numpy.column_stack()

  参考链接:https://numpy.org/devdocs/reference/generated/numpy.ma.column_stack.html?highlight=column_stack#numpy.ma.column_stack

  将一系列的1-D(我认为是1维)arrays堆叠为column以此来将他们转化为一个2维array,二维数组被堆叠为和原来的一样

*)

  

*)list to array

参考链接:https://docs.scipy.org/doc/numpy/reference/generated/numpy.asarray.html

>>> a = [1, 2]
>>> np.asarray(a)
array([1, 2])

  

numpy random模块参考链接:https://www.cnblogs.com/hhh5460/p/4324967.html#top(官方文档翻译)

*)np.random.randint(low[,high,size,dtype])

参考链接:https://www.jianshu.com/p/36a4bbb5536e

>>> np.random.randint(0,20,4)
array([ 1, 9, 17, 11])
>>> np.random.randint(0,20,[4,1])#结果中包含4个数组,每个一个
array([[16],
[19],
[ 5],
[ 9]])
>>> np.random.randint(0,20,[4])
array([ 4, 6, 11, 14])
>>> np.random.randint(0,20,4,1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "mtrand.pyx", line 973, in mtrand.RandomState.randint
TypeError: data type not understood

  

1)np.random.normal()生成高斯分布的概率密度随机数

参考链接:https://blog.csdn.net/qiqiaiairen/article/details/52505667

这个方法返回一个正态分布的数组?(正态分布、又称高斯分布、钟形曲线)

numpy.random.normal(loc=0.0, scale=1.0, size=None)

  参数含义

  loc:(float类型)概率分布的均值,是对应于整个分布的中心而言

  scale:(float类型)概率分布的标准差(标准差反应集合内个体的离散程度,越大越离散),对应于分布的宽度而言(即高度一定?),scale越大越矮胖,scale越小越瘦高

  size:(int or tuple of ints类型)输出的shape(?),默认为None,只输出一个值

这个方法返回一个正态分布的数组

>>> numpy.random.normal(0,1,20)
array([-0.98305884, -0.79340779, 0.69865242, 1.10930775, 0.17458143,
0.88452427, 0.92862304, -1.27837941, -0.88772762, 0.86100981,
3.06262977, 1.66589188, -1.34269035, -0.13672729, 0.01154996,
-1.88304306, 0.35375017, -0.88784919, 2.77849309, 0.68915905])

  

2)np.range与range

  range是python自带的库

  参考链接:https://blog.csdn.net/lanchunhui/article/details/49493633

  三个参数(S,E,Step_size)第一个参数是起点,第三个是步长,返回一个不包括第二个参数的数据序列

numpy里的数据类型、数据类型对象dtype

参考链接:https://www.runoob.com/numpy/numpy-dtype.html

numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型。详情见参考链接

数据类型对象 (dtype)

  dtype是用来描述与数组对应的内存区域如何使用(懵逼,不只有一种使用方法吗?)这依赖如下几个方面:

  • 数据的类型(整数,浮点数或者 Python 对象)
  • 数据的大小(例如, 整数使用多少个字节存储)
  • 数据的字节顺序(小端法或大端法)

字节顺序是通过对数据类型预先设定"<"或">"来决定的。"<"意味着小端法(最小值存储在最小的地址,即低位组放在最前面)。">"意味着大端法(最重要的字节存储在最小的地址,即高位组放在最前面)。

  • 在结构化类型的情况下,字段的名称、每个字段的数据类型和每个字段所取的内存块的部分
  • 如果数据类型是子数组,它的形状和数据类型

dtype 对象是使用以下语法构造的:

numpy.dtype(object, align, copy)
  • object - 要转换为的数据类型对象
  • align - 如果为 true,填充字段使其类似 C 的结构体。(继续懵逼)
  • copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用

创建dtype的例子:

  

>>> dt=np.dtype(np.int32)# 使用标量类型#不要忘记前面的np.
>>> print(dt)
int32#直接输出的这个
>>>

  

之后有列举了一些创建dtype的其他实例,介绍了一些特殊的格式如:

int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替

特殊的有一个字节顺序标注的

import numpy as np
# 字节顺序标注
dt = np.dtype('<i4')
print(dt)
#结果
int32

 

之后又展示了结构化数据类型的创建

# 类型字段名可以用于存取实际的 age 列
import numpy as np
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print(a['age'])
#结果:
[10 20 30]

问题

  因为上面哪个“dtype是用来描述与数组对应的内存区域如何使用”的疑惑还没有解决,而且在后面我也没有看到dtype是怎样使用的,只是输出了int32之类的东西,难道上面哪一个“结构化”是使用,

而且numpy的一些方法如numpy.linspace()又dtype这个参数,我也不知道有什么用。

python numPy模块 与numpy里的数据类型、数据类型对象dtype的更多相关文章

  1. Python学习day18-常用模块之NumPy

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  2. numpy模块(对矩阵的处理,ndarray对象)

    6.12自我总结 一.numpy模块 import numpy as np约定俗称要把他变成np 1.模块官方文档地址 https://docs.scipy.org/doc/numpy/referen ...

  3. numpy模块的基本使用

    numpy(Numerical Python)提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,快速.节省空间.numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提 ...

  4. 数据分析01 /numpy模块

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

  5. python numpy.shape 和 numpy.reshape函数

    导入numpy模块   from numpy import *   import numpy as np ############################################### ...

  6. python numpy模块

    目录 numpy模块 一维数组 二维数组(用的最多的) 获取多维数组的行和列 多维数组的索引 高级功能 多维数组的元素的替换 通过函数方法创建多维数组 矩阵的运算 点乘和转置(了解) 点乘必须 m*n ...

  7. Python科学计算—numpy模块总结(1)

    作为一个本科学数学专业,目前研究非线性物理领域的研究僧.用什么软件进行纯科学计算好,Fortran永远是第一位的:matlab虽然很强大,可以很容易的处理大量的大矩阵,但是求解我们的模型(有时可能是几 ...

  8. Python:基本运算、基本函数(包括复数)、Math模块、NumPy模块

    基本运算 x**2 : x^2 若x是mat矩阵,那就表示x内每个元素求平方 inf:表示正无穷 逻辑运算符:and,or,not 字典的get方法 a.get(k,d) 1 1 get相当于一条if ...

  9. python模块之numpy

    Numpy是一个第三方库,是数组相关的运算 通过pip安装:pip install numpy Anaconda python的一个科学计算发行版本,安装后将不必单独安装numpy,下面的库模块也将不 ...

随机推荐

  1. db.sqlite如何导出转储为sql文件

    在使用 django框架写博客时,用的是sqlite数据库,想要将其中的db.sqlite转储为sql文件, 我是在linux下使用的,很多linux系统下都自带sqlite 检查是否安装sqlite ...

  2. Git常用基础命令

    要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某 个项目时,需要管理这些远程仓库 ...

  3. LeetCode 1034. Coloring A Border

    原题链接在这里:https://leetcode.com/problems/coloring-a-border/ 题目: Given a 2-dimensional grid of integers, ...

  4. [RN] React Native 实现图片预览

    [RN] React Native 实现图片预览 效果预览: 代码如下: 'use strict'; import React, {Component} from 'react'; import {I ...

  5. 最短路径 | 1003 dfs 或 dij ,单源最短路径条数与经过的点权最大

    这题很早之前就遇到过,是pat留给我的第一印象,然而昨天却有点写不出来.今天dfs用了10分钟不到写出来了.dij用了大约15分钟,捉虫花了一点时间. dfs: 注意剪枝的时候别剪错就行了. #inc ...

  6. 【luoguP1168】中位数

    题目链接 用一个大根堆和一个小根堆维护中位数即可 #include<iostream> #include<cstring> #include<cstdio> #in ...

  7. Redis有效时间设置及时间过期处理

    本文对redis的过期处理机制做个简单的概述,让大家有个基本的认识. Redis中有个设置时间过期的功能,即对存储在redis数据库中的值可以设置一个过期时间.作为一个缓存数据库,这是非常实用的.如我 ...

  8. python: int to unicode string

    >>> import types >>> print type(str(2)) <type 'str'> >>> ')) <ty ...

  9. leetcode 947. 移除最多的同行或同列的石头

    题目描述: 在二维平面上,我们将石头放置在一些整数坐标点上.每个坐标点上最多只能有一块石头. 现在,move 操作将会移除与网格上的某一块石头共享一列或一行的一块石头. 我们最多能执行多少次 move ...

  10. 【2019年05月13日】A股ROE最高排名

    个股滚动ROE = 最近4个季度的归母净利润 / ((期初归母净资产 + 期末归母净资产) / 2). 查看更多个股ROE最高排名. 兰州民百(SH600738) - 滚动ROE:86.45% - 滚 ...