Numpy

Posted xcxy-boke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Numpy相关的知识,希望对你有一定的参考价值。

Numpy属性:

ndim:维度

shape:行数和列数

size:元素个数

Numpy的创建array:

array:创建数组

dtype:指定数据类型

zeros:创建数据全为0

ones:创建数据全为1

empty:创建数据接近0

arange:按指定范围创建数据

linspace:创建线段

创建数组:
a = np.array([2,23,4])  # list 1d
print(a)
# [2 23 4]

指定数据dtype:
a = np.array([2,23,4],dtype=np.int)
print(a.dtype)
# int32

创建特定数据:
a = np.array([[2,23,4],[2,32,4]])  # 2d 矩阵 2行3列
print(a)
"""
[[ 2 23  4]
 [ 2 32  4]]
"""

创建全零数组:
a = np.zeros((3,4)) # 数据全为0,3行4列

创建全空数组, 其实每个值都是接近于零的数:
a = np.empty((3,4))
"""
array([[  0.00000000e+000,   4.94065646e-324,   9.88131292e-324,
          1.48219694e-323],
       [  1.97626258e-323,   2.47032823e-323,   2.96439388e-323,
          3.45845952e-323],
       [  3.95252517e-323,   4.44659081e-323,   4.94065646e-323,
          5.43472210e-323]])
"""

用 arange 创建连续数组:
a = np.arange(10,20,2) # 10-19 的数据,2步长
"""
array([10, 12, 14, 16, 18])
"""

使用 reshape 改变数据的形状:
a = np.arange(12).reshape((3,4))    # 3行4列,0到11
"""
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
"""

用 linspace 创建线段型数据:
a = np.linspace(1,10,20)    # 开始端1,结束端10,且分割成20个数据,生成线段

 

Numpy的基本运算:

矩阵相乘:
a=np.array([[1,1],[0,1]])
b=np.arange(4).reshape((2,2))
c_dot = np.dot(a,b)
print(c_dot)
"""
array([[2, 4],
       [2, 3]])
"""

乘方:
c=b**2

最大最小值的对应索引(不是多维的索引):
A = np.arange(2,14).reshape((3,4)) 
print(np.argmin(A))    # 0   
print(np.argmax(A))    # 11

均值、中位数:
A.mean()
A.median()

累加函数:生成的每一项矩阵元素均是从原矩阵首项累加到对应项的元素之和
print(np.cumsum(A)) 
# [2 5 9 14 20 27 35 44 54 65 77 90]

累差运算函数(少一列),每一行中后一项与前一项之差:
print(np.diff(A))    
# [[1 1 1]
#  [1 1 1]
#  [1 1 1]]

分隔行和列的作为为俩个array:
print(np.nonzero(A))    
#(array([0,0,0,0,1,1,1,1,2,2,2,2]),array([0,1,2,3,0,1,2,3,0,1,2,3]))

排序:
np.sort(a, axis, kind, order)
a:要排序的数组
axis: axis=0 按列排序,axis=1 按行排序
kind: 默认为quicksort(快速排序),mergesort(归并排序)。heapsort(堆排序)
order: 如果数组包含字段,则是要排序的字段

矩阵转置:
A.T

合并:
np.vstack((A,B))  # 行合并
np.hstack((A,B))  # 列合并

分割:
split(ary, indices_or_sections, axis=0) 
ary:数组
indices_or_sections:如果是整数则是分成n份,如果是数组则成为沿轴切分的位置(左开右闭) 如(2,4)分成1,2和3,4和5之后
axis:axis=0 按列排序,axis=1 按行排序

以上是关于Numpy的主要内容,如果未能解决你的问题,请参考以下文章

'numpy.ndarray':对象不可调用错误

乐哥学AI_Python:Numpy索引,切片,常用函数

对数据进行去均值并转换为 numpy 数组

Jax 矢量化:vmap 和/或 numpy.vectorize?

微信小程序代码片段

VSCode自定义代码片段——CSS选择器