参考链接: Python中的numpy.hypot

目录

数组属性内存布局其他属性 数值类型dtype

常量创建数组创建0和1或指定数字填充的数组从现有数据创建数组创建范围数组创建重复元素数组创建随机元素数组

数组操作数组切片改变数组形状转置数组合并拆分数组查找数组唯一值数组转列表索引相关np.wherenp.choose

数学函数统计函数常用统计函数取置信区间

参考

数组属性

内存布局

方法描述ndarray.flags

有关数组内存布局的信息。ndarray.shape

数组维度的元组。ndarray.strides

遍历数组时每个维度中的字节元组。ndarray.ndim

数组维数。ndarray.data

Python缓冲区对象指向数组的数据的开头。ndarray.size

数组中的元素数。ndarray.itemsize

一个数组元素的长度,以字节为单位ndarray.nbytes

数组元素消耗的总字节数。ndarray.base

如果内存来自其他对象,则为基础对象。

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

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

print(a.shape, b.shape)  数组a,b的维度元组

print(a.ndim, b.ndim)     数组a,b的维数

print(a.size, b.size)     数组a,b的元素个数

print(a.itemsize, a.nbytes)     数组a的一个元素长度和数组消耗总字节数

(3,) (2, 3)

1 2

3 6

4 12

其他属性

方法描述ndarray.T

转置数组。ndarray.real

数组的真实部分。ndarray.imag

数组的虚部。ndarray.flat

数组上的一维迭代器。ndarray.ctypes

一个简化数组与ctypes模块交互的对象。

数值类型dtype

数值类型 转换数组数值类型

a = np.array([[1,1,3],[4,4,6]])

b = a.astype(np.float64)

b.dtype

dtype('float64')

#返回数值类型的name

b.dtype.name

'float64'

常量

(正)无穷大:np.Inf, np.Infinity (负)无穷大:np.NINF 非数字:np.NAN, np.nan, np.NaN 负零:np.NZERO 正零:np.PZERO e:np.e π:np.pi

np.isinf: 显示哪些元素为正或负无穷大。 np.isposinf: 显示哪些元素是正无穷大。 np.isneginf: 显示哪些元素为负无穷大。 np.isnan: 显示哪些元素不是数字。 np.isfinite : 显示哪些元素是有限的 - 不是(非数字,正无穷大和负无穷大)之一

将数组中nan值替换成指定值

c = np.array([[1,2,3],[np.nan,5,6]])

print(c)

c[np.isnan(c)] = 1

print(c)

[[ 1.  2.  3.]

[nan  5.  6.]]

[[  1.   2.   3.]

[999.   5.   6.]]

常量

创建数组

创建0和1或指定数字填充的数组

创建值为1的指定形状数组

array = np.ones((2,3), dtype=int)

创建值为0的指定形状数组

array = np.zeros((2,3), dtype=int)

创建与指定数组相同形状的1数组

array_like = np.ones_like(array)

创建与指定数组相同形状的0数组

array_like = np.zeros_like(array)

创建指定形状和填充值的数组

array = np.full((2,3), 4)

创建与指定数组相同形状的填充值数组

array_like = np.full_like(array, 3)

从现有数据创建数组

从已有’数据’创建数组

array = np.array([[1,2,3,7]])

根据列表数据创建数组

l = [1,2,3]

array = np.asarray(l)

创建一个数组副本,原数组修改,副本不会变化

array_copy = np.copy(array)

创建范围数组

创建给定起始,间隔数组, 起始默认为0,间隔默认为1

array = np.arange(0, 10, 2)

返回指定间隔内的等间隔数字,rendpoint控制是否包括终止点数字,retstep = True则返回范围数组和间隔

array = np.linspace(0, 10, 50, endpoint=True)

生成网格数据

lon = np.linspace(-180,180,37) # 网格精度为10°,共计37个经度点

lat = np.linspace(-90,90,19) # 网格精度为10°,共计19个纬度点

lons, lats = np.meshgrid(lon, lat)  #以lon,lat为参数生成网格数据

lats, lons = np.mgrid[-90:91:5., -180:181:5.] # 网格精度为5°,网格shape为(37,73)

创建重复元素数组

>>> a = np.arange(3)

>>> a

array([0, 1, 2])

>>> np.repeat(a,3) # 重复元素3次

array([0, 0, 0, 1, 1, 1, 2, 2, 2])

>>> np.tile(a,3) # 重复数组3次

array([0, 1, 2, 0, 1, 2, 0, 1, 2])

>>> np.tile(a,(3,2)) # 重复数组3行2列

array([[0, 1, 2, 0, 1, 2],

[0, 1, 2, 0, 1, 2],

[0, 1, 2, 0, 1, 2]])

创建随机元素数组

np.random.random(3)

array([0.4129063 , 0.94242888, 0.10129428])

np.random.random((2,3))  # 创建指定形状的0-1内随机元素数组

array([[0.80530845, 0.96161533, 0.89166972],

[0.22920038, 0.84989557, 0.46865645]])

np.random.randint(5)  # 创建指定形状和元素大小的随机整数数组

4

np.random.randint(1,5, size=(2,3))

array([[3, 3, 1],

[3, 3, 3]])

np.random.normal(10, 1, (2,3))  # 创建指定数值和标准差的随机数组

array([[ 9.03895038,  9.40851459, 10.22184416],

[10.35129551,  7.85367586,  8.51376757]])

数组操作

数组切片

a = np.arange(9)

a[-1]                            # 最后一个元素

8

a[2:5]                           # 返回第2到第5个元素

array([2, 3, 4])

a[:7:3]                          # 返回第0到第7个元素,步长为3

array([0, 3, 6])

a[::-1]                          # 返回逆序的数组

array([8, 7, 6, 5, 4, 3, 2, 1, 0])

改变数组形状

a = np.arange(8).reshape(2,4)

array([[0, 1, 2, 3],

[4, 5, 6, 7]])

a = np.arange(8)

b = np.reshape(a, (2,4))

array([[0, 1, 2, 3],

[4, 5, 6, 7]])

转置数组

a = np.arange(4).reshape(2,2)

a.T

array([[0, 1],

[2, 3]])

array([[0, 2],

[1, 3]])

c = np.transpose(a)

array([[0, 2],

[1, 3]])

#改变c 中元素,a会跟随变化

合并拆分数组

按行(垂直方向)堆叠数组

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

b = np.array([2, 3, 4])

np.vstack((a,b))

array([[1, 2, 3],

[2, 3, 4]])

按列(水平方向)堆叠数组

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

b = np.array([2, 3, 4])

np.hstack((a,b))

array([[1, 2],

[2, 3],

[3, 4]])

拆分数组

a = np.arange(8).reshape(2,4)

np.vsplit(a, 2) # 垂直方向拆分成2部分

[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]])]

np.hsplit(a, 2) # 水平方向拆分成2部分

[array([[0, 1],

[4, 5]]),

array([[2, 3],

[6, 7]])]

查找数组唯一值

返回数组唯一值

a = np.array([[1,1,3],[4,4,6]])

np.unique(a)

[1 3 4 6]

返回数组唯一行

a = np.arange(3)

b = np.tile(a, (3,1))

array([[0, 1, 2],

[0, 1, 2],

[0, 1, 2]])

np.unique(b, axis=0)

[[0 1 2]]

返回唯一值的原始数组索引

a = np.array([[1,1,3],[4,4,6]])

u, indices = np.unique(a, return_inverse=True)

u

array([1, 3, 4, 6])

indices

array([0, 0, 1, 2, 2, 3], dtype=int64)

数组转列表

a = np.array([[1,1,3],[4,4,6]])

a.tolist()

[[1, 1, 3], [4, 4, 6]]

索引相关

np.where

#符合指定条件的数组元素将被掩膜,剩余元素执行指定运算

a = np.arange(6).reshape(2,3)

b = np.where(a > 3, a, a*2)

array([[0, 1, 2],

[3, 4, 5]])

b

array([[0, 2, 4],

[6, 4, 5]])

b = np.where(a > 3, a, 999)

array([[999, 999, 999],

[999,   4,   5]])

b = np.where(a > 3, a, np.nan)   #这个在遥感影像绘图时可以将读取的nan值重新转换为nan

array([[nan, nan, nan],

[nan,  4.,  5.]])

a = np.arange(6).reshape(2,3)

c = np.where(a!=2)

#返回指定条件的bool数组,如果是二维数组则返回两个元组分别表示二维的索引

(array([0, 0, 1, 1, 1], dtype=int64), array([0, 1, 0, 1, 2], dtype=int64))

np.choose

a = np.arange(100).reshape(25,4)

mask = np.greater(a, 50) # 返回a中与50关系的同维bool数组

b = np.choose(mask, (0, a))  # mask部分等于原值a, 非mask部分等于0

更多判断函数

方法描述allclose

(a, b[, rtol, atol, equal_nan])如果两个数组在公差范围内按元素方式相等,则返回True。isclose

(a, b[, rtol, atol, equal_nan])返回一个布尔数组,其中两个数组在公差范围内按元素方式相等。array_equal

(a1, a2)如果两个数组具有相同的形状和元素,则为True,否则为False。array_equiv

(a1, a2)如果输入数组的形状一致且所有元素均相等,则返回True。greater

(x1, x2, /[, out, where, casting, …])按元素返回(x1 > x2)的真值。greater_equal

(x1, x2, /[, out, where, …])按元素返回(x1 >= x2)的真值。less

(x1, x2, /[, out, where, casting, …])按元素返回(x1 < x2)的真值。less_equal

(x1, x2, /[, out, where, casting, …])按元素返回(x1 =< x2)的真值。equal

(x1, x2, /[, out, where, casting, …])按元素返回(x1 == x2)。not_equal

(x1, x2, /[, out, where, casting, …])按元素返回(x1 != x2)。

数学函数

NumPy函数math函数功能np.emath.e自然常数np.pimath.pi圆周率np.ceil()math.ceil()进尾取整np.floor()nath.floor去尾取整np.around()四舍五入到指定精度np.rint()四舍五入到最近整数np.deg2rad()/radians()math.radians度转弧度np.rad2deg()/degrees()math.degrees()弧度转度np.hypot()math.hypot()计算直角三角形的斜边np.square()平方np.sqrt()math.sqrt()开平方np.power()math.pow()幂np.exp()math.exp()指数np.log()/log10()/log2()math.log()/log10()/log2()对数np.sin()/arcsin()math.sin()/asin()正弦/反正弦np.cos()/arccos()math.cos()/acos()余弦/反余弦np.tan()/arctan()math.tan()/atan()正切/反正切

统计函数

常用统计函数

函数功能np.max/min(a, axis=None)np.nanmax/nanmin(a, axis=None)返回数组中的最大值/最小值忽略nan返回数组中的最大值/最小值np.argmax/argmin(a, axis=None)np.nanargmax/nanargmin(a, axis=None)返回数组中最大值和最小值的索引忽略nan返回数组中最大值和最小值的索引np.ptp(a, axis=None)返回数组中元素最大值与最小值的差np.median(a, axis=None)np.nanmedian(a, axis=None)返回数组元素的中位数忽略nan返回数组元素的中位数np.sum(a, axis=None)np.nansum(a, axis=None)按指定的轴求元素之和忽略nan按指定的轴求元素之和np.cumsum(a, axis=None)np.nancumsum(a, axis=None)按指定的轴求元素的累进和忽略nan按指定的轴求元素的累进和np.diff(a, axis=-1)按指定的轴返回相邻元素的差np.prod(a, axis=None)np.nanprod(a, axis=None)按指定的轴求元素之积忽略nan按指定的轴求元素之积np.mean(a, axis=None)np.nanmean(a, axis=None)按指定的轴返回元素的算数平均值忽略nan按指定的轴返回元素的算数平均值np.average()根据权重数据,返回数据数组所有元素的加权平均值np.var(a)np.nanvar(a)返回数组方差忽略nan返回数组方差np.std()np.nanstd()返回数组标准差忽略nan返回数组标准差np.corrcoef(a, b)返回两个数组的皮尔逊积矩相关系数

取置信区间

#返回指定数组 指定轴的指定百分位数值

np.percentile(a, 99, axis=0)

可以通过interpolation关键字设置插值方法 附一个来自官方手册的各种插值效果的展示

import matplotlib.pyplot as plt

a = np.arange(4)

p = np.linspace(0, 100, 6001)

ax = plt.gca()

lines = [

('linear', None),

('higher', '--'),

('lower', '--'),

('nearest', '-.'),

('midpoint', '-.'),

]

for interpolation, style in lines:

ax.plot(

p, np.percentile(a, p, interpolation=interpolation),

label=interpolation, linestyle=style)

ax.set(

title='Interpolation methods for list: ' + str(a),

xlabel='Percentile',

ylabel='List item returned',

yticks=a)

ax.legend()

plt.show()

参考

https://www.numpy.org.cn/reference/ https://blog.csdn.net/xufive/category_9506563.html

[转载] Python Numpy基础总结相关推荐

  1. [转载] Python OpenCV 基础教程

    参考链接: python opencv 基础5 : putText() 为图像增加文本 Python OpenCV基础教程 文章目录 Python `OpenCV`基础教程1. 简介2. 安装3. 使 ...

  2. [转载] python numpy 总结

    参考链接: Python中的numpy.compress 先决条件 在阅读这个教程之前,你多少需要知道点python.如果你想重新回忆下,请看看Python Tutorial. 如果你想要运行教程中的 ...

  3. [转载] python学习-基础教程、深度学习

    参考链接: 在Python中使用NLTK对停用词进行语音标记 人工智能学习线路图 Python教程 Python 教程Python 简介Python 环境搭建Python 中文编码Python 基础语 ...

  4. Python Numpy基础教程

    NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...

  5. Python numpy基础知识

    1.基础知识 NumPy的主要对象是多维数组.它是由相同元素(通常是数字)组成的,通过正整数元组(tuple)作为索引的表格. 在数组中,纬度(dimensional)被称为轴(axis),轴的数量被 ...

  6. [转载] python numpy.sqrt_python中numpy库ndarray多维数组的的运算:np.abs(x)、np.sqrt(x)、np.modf(x)等...

    参考链接: Python中的numpy.tan numpy库提供非常便捷的数组运算,方便数据的处理. 1.数组与标量之间可直接进行运算 In [45]: a Out[45]: array([[ 0, ...

  7. Python NumPy 基础:数组和向量计算

    文章目录 1.1 NumPy 的ndarray:一种多维数组对象 创建ndarray ndarray数据类型 NumPy 数组的运算 基本的索引和切片 切片索引 布尔型索引 花式索引 数组转置和轴对换 ...

  8. [转载] python numpy 子数组_Python学习笔记3:Numpy入门

    参考链接: Python中的numpy.logaddexp2 参考<Python:数据科学手册>一书,仅作个人学习及记录使用,若有侵权,请联系后台删除. 1 理解Python中的数据类型 ...

  9. [转载] python numpy.random.randn()与numpy.random.rand()的区别 (正态分布公式)(标准正态分布 standard normal distribution

    参考链接: Python中的numpy.random.randn 引用文章: numpy.random.randn()与numpy.random.rand()的区别 https://www.cnblo ...

最新文章

  1. python-回调函数和递归函数
  2. jmeter基本测试步骤
  3. zoj 3627(贪心)
  4. Linux 学习记录 四(Bash 和 Shell scirpt).
  5. 搭建mongodb分片
  6. 报错整理:ImportError: cannot import name ‘mean_absolute_percentage_error‘ from ‘sklearn.metrics‘
  7. IDEA中创建类时,自动在文件头中添加作者以及创建时间
  8. 使用autossh实现开机创建ssh tunnel的方法以及shell脚本.
  9. P3966 [TJOI2013]单词
  10. SQLite3基本使用从shell到python
  11. 08-07 性能测试--性能监听平台
  12. python函数-返回菲波那切数列for,range,append
  13. 利用apache 的PropertyUtilsBean 实现map和pojo相互转换
  14. 使用seaborn绘制热图
  15. .jnlp 文件打开方式
  16. 青春日志html,人民日报青春日记:做有信仰的奋斗者
  17. C语言经典一百题(六)用*号输出字母C的图案。
  18. HTML5结构元素总结
  19. 汇编程序设计:代码转换程序
  20. python:实现DES和3DES加解密算法(附完整源码)

热门文章

  1. 【CCCC】L3-006 迎风一刀斩 (30分),几何关系,找规律 (拼合多边形==斜边等价)
  2. Lc24两两交换链表
  3. 5319. 删除回文子序列
  4. 2016蓝桥杯C++A:寒假作业(详细解析)
  5. Unity3D之UGUI基础10:画布的三种模式
  6. bzoj 1030: [JSOI2007]文本生成器(AC自动机+DP)
  7. bzoj 1034: [ZJOI2008]泡泡堂BNB(贪心)
  8. python中random库
  9. C++ STL 容器的合并、求差集、交集等操作实例 含详细注释版
  10. python绘图 条形图 直方图 饼图 箱型图 误差图 多图绘制 图表注释 三维图形