Python_Numpy

Numpy笔记

numpy.movezxis

  • 格式: numpy.moveaxis(a, source, destination)
  • 功能: 将数组的轴移到新位置。
参数 :
a :np.ndarray
轴应重新排序的数组。
source :int 或 int的sequence 
要移动的轴的原始位置。 这些必须是唯一的。
destination :int 或 int的sequence
每个原始轴的目标位置。 这些也必须是唯一的。
>>> import numpy as np
>>> x = np.zeros((3,4,5))
>>> np.moveaxis(x,0,-1).shape
(4, 5, 3)
>>> x
array([[[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]],

       [[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]],

       [[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]]])
>>> x = np.moveaxis(x,0,-1)
>>> x
array([[[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]]])

numpy.rollaxis函数

  • 格式: numpy.rollaxis(a, axis, start=0)
  • 功能: 向后滚动指定的轴,直到其位于给定的位置。
参数 :
a :ndarray
输入数组。
axis :int
要滚动的轴。 其他轴的位置相对彼此不变。
start :int, 可选
start<= axis(开始<=轴)时,轴将回滚直到其位于该位置。 
当start>axis时,轴将滚动直到其位于该位置之前。 默认值为0
>>> a = np.ones((3,4,5,6))
>>> np.rollaxis(a,3,1).shape
(3, 6, 4, 5)
>>> np.rollaxis(a,2).shape #如果没有设置目的参数,则自动到最前面
(5, 3, 4, 6)
>>> np.rollaxis(a,1,4).shape
(3, 5, 6, 4)

numpy.swapaxes函数

  • 格式: numpy.swapaxes(a, axis1, axis2)
  • 功能: 互换数组的两个轴。
参数 :
a :array_like
输入数组。
axis1 :int
第一轴。
axis2 :int
第二轴。
>>> x = np.array([[1,2,3]])
>>> np.swapaxes(x,0,1)
array([[1],
       [2],
       [3]])
>>> x = np.array([[[0,1],[2,3]],[[4,5],[6,7]]])
>>> x
array([[[0, 1],
        [2, 3]],

       [[4, 5],
        [6, 7]]])
>>> np.swapaxes(x,0,2)
array([[[0, 4],
        [2, 6]],

       [[1, 5],
        [3, 7]]])

numpy.transpose函数

  • 格式: numpy.transpose(a, axes=None)
  • 功能: 反转或排列数组的轴; 返回修改后的数组。
参数 :
a :array_like
输入数组。
axes :tuple 或 int类型的list, 可选
如果指定,它必须是包含[0,1,..,N-1]的排列的元组或列表,
其中N是a的轴数。 
返回数组的第i个轴将与输入的编号为axes [i]的轴相对应。 
如果未指定,则默认为range(a.ndim)[::-1],这将反转轴的顺序。
>>> x = np.arange(4).reshape(2,2)
>>> x
array([[0, 1],
       [2, 3]])
>>> np.transpose(x)
array([[0, 2],
       [1, 3]])

numpy.atleast_1d函数

  • 格式: numpy.atleast_1d(*arys)
  • 功能: 将输入转换为至少一维的数组
参数 :
arys1, arys2, … :array_like
一个或多个输入数组。
>>> import numpy as np
>>> np.atleast_1d(1.0)
array([1.])
>>> x = np.arange(9.0).reshape(3,3)
>>> np.atleast_1d(x)
array([[0., 1., 2.],
       [3., 4., 5.],
       [6., 7., 8.]])
>>> np.atleast_1d(1,[3,4])
[array([1]), array([3, 4])]

numpy.atleast_2d函数

  • 格式: numpy.atleast_2d(*arys)
  • 功能: 将输入视为至少具有二维的数组。
参数:
arys1, arys2, … :array_like
一个或多个类似数组的序列。 非数组输入将转换为数组。 
保留已经具有二维或更多维的数组
>>> np.atleast_2d(3.0)
array([[3.]])
>>> import numpy as np
>>> x = np.arange(3.0)
>>> np.atleast_2d(x)
array([[0., 1., 2.]])
>>> np.atleast_2d(x).base is x
True

numpy.atleast_3d函数

  • 格式: numpy.atleast_2d(*arys)
  • 功能: 将输入视为至少具有三维的数组。
参数:
arys1, arys2, … :array_like
一个或多个类似数组的序列。 非数组输入将转换为数组。 
保留已经具有三维或更多维的数组
>>> np.atleast_3d(3.0)
array([[[3.]]])
>>> x = np.arange(3.0)
>>> np.atleast_3d(x).shape
(1, 3, 1)
>>> x = np.arange(12.0).reshape(4,3)
>>> np.atleast_3d(x).shape
(4, 3, 1)
>>> np.atleast_3d(x).base is x.base 
True
>>> for arr in np.atleast_3d([1,2],[[1,2]],[[[1,2]]]):
...     print(arr,arr.shape)
... 
[[[1]
  [2]]] (1, 2, 1)
[[[1]
  [2]]] (1, 2, 1)
[[[1 2]]] (1, 1, 2)

numpy.broadcast_to函数

  • 格式: numpy.broadcast_to(array, shape, subok=False)
  • 功能: 将数组广播为新shape。
参数 :
array :array_like
要广播的数组。
shape :tuple
所需数组的形状。
subok :bool, 可选
如果为True,则将传递子类,否则,
返回的数组将被强制为基类数组(默认)。
>>> x = np.array([1,2,3])
>>> np.broadcast_to(x,(3,3))
array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3]])

numpy.broadcast_array函数

  • 格式: numpy.broadcast_arrays(*args, subok=False)
  • 功能: 相互广播任意数量的arrays。
参数 :
`*args` :array_likes
要广播的阵列。
subok :bool, 可选
如果为True,则将传递子类,否则,
返回的数组将被强制为基类数组(默认)。
>>> x = np.array([[1,2,3]])
>>> y = np.array([[4],[5]])
>>> np.broadcast_arrays(x,y)
[array([[1, 2, 3],
       [1, 2, 3]]), array([[4, 4, 4],
       [5, 5, 5]])]
>>> np.broadcast_arrays(x,np.array([[3,2,1]]))
[array([[1, 2, 3]]), array([[3, 2, 1]])]
>>> np.broadcast_arrays(x,(np.array([[3,2,1]]),np.array([[3,2,1]])))
[array([[[1, 2, 3]],
       [[1, 2, 3]]]), array([[[3, 2, 1]],
       [[3, 2, 1]]])]

numpy.expand_dims函数

  • 格式: numpy.expand_dims(a, axis)
  • 功能: 展开数组的shape
>>> x = np.array([1,2])
>>> x.shape
(2,)
>>> y = np.expand_dims(x,axis=0)
>>> y
array([[1, 2]])
>>> y.shape
(1, 2)
>>> y = np.expand_dims(x,axis=(0,1))
>>> y
array([[[1, 2]]])
>>> y = np.expand_dims(x,axis=(2,0))
>>> y
array([[[1],
        [2]]])

numpy.squeeze函数

  • 格式: numpy.squeeze(a, axis=None)
  • 功能: 从数组shape中删除一维条目
参数 :
a :array_like
输入数据。
axis :None 或 int 或 int类型的tuple。 选择形状中一维条目的子集。 
如果选择的形状输入大于一个的轴,则会引发错误。
Raises :ValueError
>>> x = np.array([[[0],[1],[2]]])
>>> x.shape
(1, 3, 1)
>>> np.squeeze(x).shape
(3,)
>>> np.squeeze(x,axis=0).shape
(3, 1)
>>> np.squeeze(x,axis=1).shape
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<__array_function__ internals>", line 5, in squeeze
  File "/home/enrace/.local/lib/python3.8/site-packages/numpy/core/fromnumeric.py", line 1508, in squeeze
    return squeeze(axis=axis)
ValueError: cannot select an axis to squeeze out which has size not equal to one
>>> x = np.array([[1234]])
>>> x.shape
(1, 1)
>>> np.squeeze(x)
array(1234)
>>> np.squeeze(x)[()]
1234

numpy.asfarray函数

  • 格式: numpy.asfarray(a, dtype=nx.float)
  • 功能: 返回转换为浮点类型的数组。
参数 :
a :array_like
输入数组。
dtype :str 或 dtype object, 可选
浮点类型代码强制输入数组a。 如果dtype是'int' dtypes之一,
则将其替换为float64
>>> np.asfarray([2,3])
array([2., 3.])
>>> np.asfarray([2,3],dtype='float')
array([2., 3.])
>>> np.asfarray([2,3],dtype='int8')
array([2., 3.])

numpy.asfortranarray函数

  • 格式: numpy.asfortranarray(a, dtype=None)
  • 功能: 返回以Fortran顺序排列在内存中的数组(ndim> = 1)。
参数 :
a:array_like
输入数组。
dtype :str 或 dtype object, 可选
默认情况下,从输入数据中推断出数据类型
>>> x = np.arange(6).reshape(2,3)
>>> y = np.asfortranarray(x)
>>> y = np.asfortranarray(x)
>>> x.flags['F_CONTIGUOUS']
False
>>> y.flags['F_CONTIGUOUS']
True

numpy.asarray_chkfinite函数

  • 格式: numpy.asarray_chkfinite(a, dtype=None, order=None)
  • 功能: 将输入转换为数组,检查NaN或Infs。
参数 :
a:array_like
输入数据,可以转换为数组的任何形式。 
这包括列表,元组列表,元组,元组元组,列表元组和ndarray。
成功不需要NaN或Infs。
dtype :data-type, 可选
默认情况下,从输入数据中推断出数据类型。
或der :{‘C’, ‘F’}, 可选
是使用row-major(C-style)
还是column-major(Fortran-style)内存表示形式。
默认为'C'。
>>> a = [1,2,3]
>>> try:
...     np.asarray_chkfinite(a)
... except ValueError:
...     print('ValueError')
... 
array([1, 2, 3])
>>> np.asarray_chkfinite(a,dtype=float)
array([1., 2.])
>>> a = [1,2,np.inf]
>>> try:
...     np.asarray_chkfinite(a)
... except ValueError:
...     print('ValueError')
... 
ValueError

numpy.asscalar函数(已经弃用,等效ndarray.item())

  • 格式: numpy.asscalar(a)
  • 功能: 将大小为1的数组转换为其等效的标量(scalar)。
参数 :
a :ndarray
输入数组的大小为1。
>>> np.asscalar(np.array([24]))
<stdin>:1: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead
24
>>> np.array([24]).item()
24

numpy.require函数

  • 格式: numpy.require(a, dtype=None, requirements=None)
  • 功能: 返回提供的类型满足要求的ndarray。
参数 :
a :array_like
要转换为满足类型和要求的对象的对象。
dtype :data-type
所需的数据类型。 如果为None,则保留当前dtype。 
如果您的应用程序要求数据以本机字节序显示,
请在dtype规范中包含字节序规范。
requirements :str 或 str类型的list
需求列表可以是以下任意一项 :
‘C_CONTIGUOUS’ (‘C’) :确保C连续数组 
‘F_CONTIGUOUS’ (‘F’) :确保Fortran连续数组 
'OWNDATA' ('O') : 确保数组拥有自己的数据 
‘WRITEABLE’ (‘W’) :确保可写数组
'ALIGNED' ('A') :确保数据类型对齐的数组 
‘ENSUREARRAY’, (‘E’) : 确保基本数组而不是子类
>>> x = np.arange(6).reshape(2,3)
>>> y = np.require(x,dtype=np.float32,requirements=['A','o','w','F'])
>>> y.flags
  C_CONTIGUOUS : False
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False

Other知识

numy.flags属性

>>> x = np.arange(6).reshape(2,3)
>>> x.flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值