numpy

1 [numpy](#1 numpy)

numpy全称叫Numerical Python,由C语言开发,摆脱python全局解析锁,运算性能强、用来存储和处理大型矩阵,是科学计算和数据分析的基本工具。

2 [numpy](#2 numpy属性)属性

numpy默认数据类型int64、float64

创建一个3行5列从0到14的数组

import numpy as np
a = np.arange(15).reshape(3, 5)

打印数组print(a)

数组的维度a.shape

数组轴的个数a.ndim

数组元素类型a.dtype

数组中每个元素的字节大小a.itemsize

数组元素的总个数a.size

类型查询type(a)

[3 创建ndarray](#3 创建ndarray)

复制代码
### [1 array()](#1 array())

数组里的所有元素都是相同数据类型

    [2 zeros() /ones()/empty()](#2 zeros() /ones()/empty())

zeros()全0数组

ones()全1数组

empty内容随机并且依赖于内存状态的全0数组

数组类型(dtype)都是float64

    [3 arange()](#3 arange())

arange() 类似 python 的 range() ,创建一个一维 ndarray 数组

np_arange = np.arange(10, 20, 5,dtype=int) #[10,20)步长为5

print (np_arange) # [10, 15]

    [4 matrix()](#4 matrix())

matrix 是 ndarray 的子类,只能生成 2 维的矩阵

x1 = np.mat("1 2;3 4")

x2 = np.matrix("1,2;3,4")

x3 = np.matrix([[1, 2],[3, 4]])

    [5 创建随机数矩阵](#5 创建随机数矩阵)

python 复制代码
import numpy as np

# 3行4列随机多维浮点型数据(二维),rand固定区间[0.0, 1.0)
arr = np.random.rand(3, 4)
print(arr)

# 3行4列随机多维浮点型数据(二维),randn标准正态分布(均值 = 0,标准差 = 1)大部分数字在-2~2
arr = np.random.randn(3, 4)
print(arr)

# 3行4列随机多维整型数据(二维),randint()指定区间[-1, 5)
arr = np.random.randint(-1, 5, size = (3, 4)) 
print(arr)

# 3行4列随机多维浮点型数据(二维),uniform()指定区间[-1, 5)均匀分布的样本值
arr = np.random.uniform(-1, 5, size = (3, 4))
print(arr)

    [6 ndarray的数据类型](#6 ndarray的数据类型)

  1. 指定dtype数据类型

  2. astype()转换数组的数据类型

python 复制代码
import numpy as np

zeros_float_arr = np.zeros((3, 4), dtype=np.float32)
print(zeros_float_arr.dtype) #float32

# astype将数组的数据类型转换为int32
zeros_int_arr = zeros_float_arr.astype(np.int32)
print(zeros_int_arr.dtype)  #int32

    [7 等比/等差数列](#7 等比/等差数列)

logspace创建一个等比数列的一维数组

python 复制代码
import numpy as np

a = np.logspace(0, 0, 10)  # 开始点为0,结束点为0,元素个数为10
print(a)  # [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
a = np.logspace(0, 9, 10)  # 0代表10的0次方,9代表10的9次方
print(a)  # [1.e+00 1.e+01 1.e+02 1.e+03 1.e+04 1.e+05 1.e+06 1.e+07 1.e+08 1.e+09]
a = np.logspace(0, 9, 10, base=2)  # 改变基数,以2为底数
print(a)  # [  1.   2.   4.   8.  16.  32.  64. 128. 256. 512.]

linspace创建一个等差数列的一维数组

python 复制代码
import numpy as np

a = np.linspace(1,10,10)  # 起始点,终止点,数列的个数
print(a)  # [ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]
print(a.dtype)  # float64
a = np.linspace(1,10,10,endpoint=False)  # endpoint指定是否包含终止值,默认值为True
print(a)  # [1.  1.9 2.8 3.7 4.6 5.5 6.4 7.3 8.2 9.1]

[4 NumPy内置函数](#4 NumPy内置函数)

    [1 基本函数](#1 基本函数)

  • np.ceil(): 向上最接近的整数,参数是 number 或 array

  • np.floor(): 向下最接近的整数,参数是 number 或 array

  • np.rint(): 四舍五入,参数是 number 或 array

  • np.isnan(): 判断元素是否为 NaN(Not a Number),参数是 number 或 array

  • np.multiply(): 元素相乘,参数是 number 或 array

  • np.divide(): 元素相除,参数是 number 或 array

  • np.abs():元素的绝对值,参数是 number 或 array

  • np.where(condition, x, y): 三元运算符,x if condition else y

python 复制代码
import numpy as np

# randn()标准正态分布
arr = np.random.randn(2, 3)
print(arr)
"""
[[ 0.62075155 -0.39586061  0.07556188]
 [ 1.14602401  0.61087754  1.3770935 ]]
"""
print(np.ceil(arr))
"""
[[ 1. -0.  1.]
 [ 2.  1.  2.]]
"""
print(np.floor(arr))
"""
[[ 0. -1.  0.]
 [ 1.  0.  1.]]
"""
print(np.rint(arr))
"""
[[ 1. -0.  0.]
 [ 1.  1.  1.]]
"""
print(np.isnan(arr))
"""
[[False False False]
 [False False False]]
"""
print(np.multiply(arr, arr))
"""
[[0.38533249 0.15670562 0.0057096 ]
 [1.31337102 0.37317137 1.8963865 ]]
"""
print(np.divide(arr, arr))
"""
[[1. 1. 1.]
 [1. 1. 1.]]
"""
print(np.abs(arr))
"""
[[0.62075155 0.39586061 0.07556188]
 [1.14602401 0.61087754 1.3770935 ]]
"""
print(np.where(arr > 0, 1, -1))
"""
[[ 1 -1  1]
 [ 1  1  1]]
"""

    [2 统计函数](#2 统计函数)

  • np.mean(), np.sum():所有元素的平均值,所有元素的和,参数是 number 或 array

  • np.max(), np.min():所有元素的最大值,所有元素的最小值,参数是 number 或 array

  • np.std(), np.var():所有元素的标准差,所有元素的方差,参数是 number 或 array

  • np.argmax(), np.argmin():最大值的下标索引值,最小值的下标索引值,参数是 number 或 array

  • np.cumsum(), np.cumprod():返回一个一维数组,每个元素都是之前所有元素的 累加和 和 累乘积,参数是 number 或 array

多维数组默认统计全部维度,axis参数可以按指定轴心统计,值为0则按第0个维度统计,值为1则按第1个维度统计。

python 复制代码
import numpy as np

arr = np.arange(12).reshape(3, 4)
print(arr)
"""
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
"""
print(np.cumsum(arr))  # 前缀和
"""
[ 0  1  3  6 10 15 21 28 36 45 55 66]
"""
print(np.sum(arr))  # 所有元素的和66
print(np.sum(arr, axis=0))  # 数组的按第0个维度统计和[12 15 18 21]
print(np.sum(arr, axis=1))  # 数组的按第1个维度统计和[ 6 22 38]

    [3 比较函数](#3 比较函数)

  • np.any(): 至少有一个元素满足指定条件,返回True
  • np.all(): 所有的元素满足指定条件,返回True
python 复制代码
import numpy as np

arr = np.random.randn(2,3)  # randn(均值 = 0,标准差 = 1)大部分数字在-2~2
print(arr)
"""
[[-0.37764946  0.19308709 -0.21882821]
 [ 2.32190081  1.79766043 -0.21875982]]
"""
print(np.any(arr > 0))
print(np.all(arr > 0))

    [4 去重函数](#4 去重函数)

np.unique():找到唯一值并返回排序结果,类似于Python的set集合

python 复制代码
import numpy as np

arr = np.array([[1, 4, 1], [3, 2, 1]])
print(arr)
"""
[[1 4 1]
 [3 2 1]]
"""
print(np.unique(arr))  # [1 2 3 4]

    [5 排序函数](#5 排序函数)

python 复制代码
import numpy as np

arr = np.array([1, 2, 34, 5])
# np.sort()返回排序后的副本
sortarr1 = np.sort(arr)
print(sortarr1)
print(arr)

# ndarray直接调用sort,在原数据上进行修改
arr.sort()
print(arr)

[5 NumPy运算](#5 NumPy运算)

复制代码
### [1 基本运算](#1 基本运算)
python 复制代码
import numpy as np

a = np.array([10, 10, 10, 10])
b = np.arange(4)
c = a + b
print(a)  # [10 10 10 10]
print(b)  # [0 1 2 3]
print(c)  # [10 11 12 13]

    [2 矩阵乘法](#2 矩阵乘法)

np.dot / x.dot(y) 【矩阵乘法】 (数学里的点积、行列相乘求和)

python 复制代码
import numpy as np

x = np.array(
    [[1, 1, 1],
     [1, 1, 1]]
)
y = np.array(
    [[1, 1],
     [1, 1],
     [1, 1]]
)
print(x.dot(y))
print(np.dot(x, y))
"""
[[3 3]
 [3 3]]
"""

*【逐元素相乘】(对应位置的数字直接相乘)

python 复制代码
import numpy as np

a = np.array(
    [[2, 2, 2],
     [3, 3, 3]]
)
b = np.array(
    [[2, 2, 2],
     [3, 3, 3]]
)
print(a * b)
"""
[[4 4 4]
 [9 9 9]]
"""
相关推荐
xiaotao13115 小时前
01-编程基础与数学基石: NumPy数值计算库
人工智能·python·numpy
kcuwu.4 天前
Python 数据分析实战:NumPy、Pandas、Matplotlib 融合
python·数据分析·numpy
贵州数擎科技有限公司5 天前
NumPy 从数组操作理解深度学习的计算本质
人工智能·numpy
贵州晓智信息科技5 天前
NumPy 从数组操作理解深度学习的计算本质
人工智能·深度学习·numpy
zzwq.5 天前
数据分析三件套:Numpy、Pandas、Matplotlib
数据分析·numpy·pandas
kcuwu.5 天前
Python数据分析三剑客导论:NumPy、Pandas、Matplotlib 从入门到入门
python·数据分析·numpy
superior tigre5 天前
NumPy 基础使用方法(基础+矩阵运算+Attention)
线性代数·矩阵·numpy
絆人心8 天前
Python 数据分析核心库:Pandas 与 NumPy 从入门到实战全指南(附电商用户分析完整代码)
python·数据挖掘·数据分析·numpy·pandas·数据处理·电商数据分析
郝学胜-神的一滴8 天前
玩转PyTorch:detach函数破解自动微分张量转numpy难题
人工智能·pytorch·python·深度学习·机器学习·numpy