np的一些函数汇总

ndarray定义

查看这个文章 NumPy Ndarray 对象及数据类型发现ndarray的定义

NumPy提供了两种基本的对象:ndarray(N-dimensional array object) ufunc(universal function object)
      ndarray(下文统一称之为数组)是存储单一数据类型的n维数组,
       ufunc 则是能够对数组进行处理的函数。

ndarray的shape属性

查看文章Python numpy ndarray.shape以及ndarray.ndim问题找到了ndarray的shape属性表示的意义是是每一层(每一个[])元素的个数,由外向内。比如

	c=np.array(
    [
    [
        [[1],[1]],
        [[1],[1]],
        [[1],[1]]
    ],
    [
        [[1],[1]],
        [[1],[1]],
        [[1],[1]]
    ],
    [
        [[1],[1]],
        [[1],[1]],
        [[1],[1]]
    ],
    [
        [[1],[1]],
        [[1],[1]],
        [[1],[1]]
    ]
    ]
    )
print('shape:'+str(c.shape)) //shape:(4, 3, 2, 1)

比如:

shape=(24,2)  #表示二维数组 ,24行2列 
shape=(24,)   #表示一维数组,数组中有24个元素

np.reshape函数

官方文档标准格式是np.reshape(a, newshape, order='C'),order可以选择{‘C’, ‘F’, ‘A’},表示以不同的顺序进行矩阵填充。默认是’C’,具体参照numpy中的reshape函数详解

C是就是从最后一维开始,按行优先填充为需要的矩阵,如下:
在这里插入图片描述

np.newaxis

参考博客np.newaxis的功能: 插入新维度

列1:

a=np.array([1,2,3])
aa=a[:,np.newaxis]
print(aa.shape)  #(3, 1)
print (aa) #[[1]
          	 [2]
   			 [3]]

列2:

a=np.array([1,2,3])
aa=a[np.newaxis,:]
print(aa.shape)  #(1, 5)
print (aa)  #[[1 2 3 4 5]]

np.mean

参考博客官方文档 mean() 函数定义:

numpy.mean(a, axis, dtype, out,keepdims ) #求均值,其中axis, dtype, out,keepdims都是可选参数
#a是包含期望均值的数字的数组
#axis计算平均值的一个或多个轴。默认情况下,计算展平阵列的平均值
#dtype用于计算平均值的类型
#out,默认为none,用于放置结果的备用输出数组

经常操作的参数为axis,以m * n矩阵举例:

axis 不设置值,对 m*n 个数求均值,返回一个实数
axis = 0:压缩行,对各列求均值,返回 1* n 矩阵
axis =1 :压缩列,对各行求均值,返回 m *1 矩阵

参考博客

但是实际运行的时候,发现结果不是一行数组,是将最外层的数据求平均的少一维的数组:

import numpy as np
a=np.empty([3,2,1])
print(a)  #shape=(3,2,1)
print(a.mean(axis=0))   #shape=(2,1)

a>>>[[[4.45038538e-307]
  [2.33646676e-307]]

 [[8.45599366e-307]
  [1.37962388e-306]]

 [[3.44902066e-307]
  [4.67287579e-307]]]

a.mean(axis=0)>>>[[5.45179990e-307]
 [6.93519379e-307]]

np.std

参考博客

numpy.std(a, axis=None, dtype=None, out=None, ddof=0) //计算沿指定轴的标准差。返回数据的标准差

 	a:array_like,需计算标准差的数组
   	axis: int, 可选,计算标准差的轴。默认情况是计算扁平数组的标准偏差。
    dtype: dtype, 可选,用于计算标准差的类型。对于整数类型的数组,缺省值为Float 64,对于浮点数类型的数组,它与数组类型相同。
    out: ndarray, 可选,将结果放置在其中的替代输出数组。它必须具有与预期输出相同的形状,但如果有必要,类型(计算值的类型)将被转换。
    ddof: int, 可选,Delta的自由度

标准差计算公式:
S 2 = ( x 1 − x ˉ ) 2 + ( x 2 − x ˉ ) 2 + . . . + ( x n − x ˉ ) 2 n S^2=\sqrt{\frac{(x_1-\bar{x})^2+(x_2-\bar{x})^2+...+(x_n-\bar{x})^2}{n}} S2=n(x1xˉ)2+(x2xˉ)2+...+(xnxˉ)2

np.concatenate

参考博客找到官方解释定义
concatenate((a1, a2, ...), axis=0)

其中传入参数必须是一个多个数组的元组或者列表
axis表示拼接方向,0表示保留列,横向拼接,1表示保留行 纵向拼接。

In [23]: a = np.array([[1, 2], [3, 4]])
In [24]: b = np.array([[5, 6]])
In [25]: np.concatenate((a, b), axis=0)
Out[25]:
array([[1, 2],
       [3, 4],
       [5, 6]])

意思就是axis=0时,两个数组的列要相同,axis=1时,两个数组的行要相同。

列表数组切片

列表切片

参考博客可知:

python中符合序列的有序序列都支持切片,例如列表、字符串、元祖

格式:【start:end:step】

start:开始索引;end:结束索引;step:步长(步长为正时,从左到右索引,正序取值;步长为负时,从右到左索引,倒序取值),取不到结束位。
在这里插入图片描述
示列代码:

a = [1,2,3,4,5,6]
 
a[:3:1]    #默认从0开始
>>>[1,2,3]

a[:3]    #默认步长为 1 
>>>[1,2,3]

a[:-4:-1]
>>>[6, 5, 4]  #默认从 -1 开始
 
a[3:0:-1]
>>>[4,3,2]   #倒序索引

数组切片(数组形式,若是一个大列表,可以np.array(list)转成数组)

1. 二维数组,X【行,列】

对于X[:,0] ,取二维数组中第一列所有行的数据
对于X[1,:],取二维数组中第二行所有列的数据
对于X[:,m:n] ,取二维数组中第m列到第n-1列所有行的数据
对于X[m:n,:],取二维数组中第m行到第n-1行所有列的数据

2. 三维数组,X【楼层,行,列】

创建一个三维数组:

 a = np.arange(24).reshape(2,3,4)
    print(a)
     
    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]]])
   
    a[0,0,0]
    >>>0

	a[:,0,0]
    >>>array([ 0, 12])	
	
	a[0]
    >>>array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]])

	  a[:,:,2:4]
    >>>array([[[ 2,  3],
            [ 6,  7],
            [10, 11]],
     
           [[14, 15],
            [18, 19],
            [22, 23]]])
	

注:以上数组形式的切片方法,在矩阵中同样适用。但是,若要取某个准确的值时,比如说第一列,第二行这一准确值时,矩阵的话,最好用mat[1,2],而数组的话,既可以用array[1,2],也可以用array[1][2] 。

numpy.empty

参考博客empty的定义:

numpy.empty(shape, dtype=float, order=‘C’)  3根据给定的维度和数值类型返回一个新的数组,不会给数组元素值设置为0.
#shape 整数或者整数组成的元组
#dtype  数值类型,可选参数
#order  {‘C’,'F'},可选参数(在内存中以(C)行(F)列顺序存储多维数据)
#返回值是一个n维的数组

列:

import numpy as np
a=np.empty([3,2,1])
print(a)

结果(每次运行结果都不一样):
[[[3.33772792e-307]
  [4.22786102e-307]]

 [[2.78145267e-307]
  [4.00537061e-307]]

 [[9.45656391e-308]
  [0.00000000e+000]]]
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值