NumPy的教程--数组,基本运算

来源:互联网 发布:三菱变频器调试软件 编辑:程序博客网 时间:2024/06/05 01:03

例如,在3D空间一个点的坐标 [1, 2, 3] 是一个秩为1的数组,因为它只有一个轴。那个轴长度为3.又例如,在以下例子中,数组的秩为2(它有两个维度).第一个维度长度为2,第二个维度长度为3.

  • ndarray.ndim

    数组轴的个数,在python的世界中,轴的个数被称作秩

  • ndarray.shape

    数组的维度。这是一个指示数组在每个维度上大小的整数元组。例如一个n排m列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性

  • ndarray.size

    数组元素的总个数,等于shape属性中元组元素的乘积。

  • ndarray.dtype

    一个用来描述数组中元素类型的对象,可以通过创造或指定dtype使用标准Python类型。另外NumPy提供它自己的数据类型。

  • ndarray.itemsize

    数组中每个元素的字节大小。例如,一个元素类型为float64的数组itemsiz属性值为8(=64/8),又如,一个元素类型为complex32的数组item属性为4(=32/8).

  • ndarray.data

    包含实际数组元素的缓冲区,通常我们不需要使用这个属性,因为我们总是通过索引来使用数组中的元素。


    arange()类似于内置函数range(),通过指定开始值、终值和步长

    linspace()通过指定开始值、终值和元素个数



    >>>from numpy import *>>>a = arange(15).reshape(3,5)

    >>>aarray([[0,1,2,3,4],  

    [5,6,7,8,9],  

    [10,11,12,13,14]])

    >>>a.shape

    (3,5)

    >>>a.ndim

    2

    >>>a.dtype.name'int32'

    >>>a.itemsize

    4

    >>>a.size

    15

    >>>type(a)

    numpy.ndarray


    a = array(1,2,3,4)# WRONG,不能这么赋值



    >>> b = array( [ (1.5,2,3), (4,5,6) ] )

    >>> b

    array([[1.5,2. , 3. ],  

    [4. , 5. , 6. ]]) #多维数组


    数组类型可以在创建时显示指定

    >>> c = array( [ [1,2], [3,4] ], dtype=complex)

    >>> carray([[1.+0.j,2.+0.j], [ 3.+0.j,4.+0.j]])


    函数 zeros 创建一个全是0的数组,函数 ones 创建一个全1的数组,函数empty 创建一个内容随机并且依赖与内存状态的数组。默认创建的数组类型(dtype)都是float64。

    >>> zeros( (3,4) )array([[0.,  0.,  0.,  0.],       [0.,  0.,  0.,  0.],       [0.,  0.,  0.,  0.]])>>> ones( (2,3,4), dtype=int16 )                # dtype can also be specifiedarray([[[ 1, 1, 1, 1],        [ 1, 1, 1, 1],        [ 1, 1, 1, 1]],       [[ 1, 1, 1, 1],        [ 1, 1, 1, 1],        [ 1, 1, 1, 1]]], dtype=int16)>>> empty( (2,3) )array([[  3.73603959e-262,   6.02658058e-154,   6.55490914e-260],       [  5.30498948e-313,   3.14673309e-307,   1.00000000e+000]])

arange返回的是数组而不是列表

arange(0,2,0.3 ) # it accepts float arguments

array([0. , 0.3,0.6,0.9,1.2,1.5,1.8])



如果一个数组用来打印太大了,NumPy自动省略中间部分而只打印角落

>>> print arange(10000)[   0    1    2 ..., 9997 9998 9999]>>>>>> print arange(10000).reshape(100,100)[[   0    1    2 ...,   97   98   99] [ 100  101  102 ...,  197  198  199] [ 200  201  202 ...,  297  298  299] ..., [9700 9701 9702 ..., 9797 9798 9799] [9800 9801 9802 ..., 9897 9898 9899] [9900 9901 9902 ..., 9997 9998 9999]]

禁用NumPy的这种行为并强制打印整个数组,你可以设置printoptions参数来更改打印选项

>>> set_printoptions(threshold='nan')
NumPy中的乘法运算符 * 指示按元素计算,矩阵乘法可以使用dot 函数或创建矩阵对象实现

>>>A = array( [[1,1],...

[0,1]] )

>>>B = array( [[2,0],... 

[3,4]] )

>>>A*B# elementwise product

array([[2,0],

[0,4]])

>>>dot(A,B)  # matrix product

array([[5,4],  

[3,4]])



>>>aarray([[0.6903007 , 0.39168346,0.16524769],  

[0.48819875,0.77188505,0.94792155]])

>>>a.sum()3.4552372100521485

>>>a.min()0.16524768654743593

>>>a.max()0.9479215542670073

>>>d = exp(c*1j) #指数,求复数

>>>darray([0.54030231+0.84147098j, -0.84147098+0.54030231j, -0.54030231-0.84147098j])

>>>d.dtype.name'complex128' 许多非数组运算,如计算数组所有元素之和,被作为ndarray类的方法实现



指定 axis 参数你可以吧运算应用到数组指定的轴上:axis=0,纵向运算,axis=1,横向运算

>>> b = arange(12).reshape(3,4)>>> barray([[ 0,  1,  2,  3],       [ 4,  5,  6,  7],       [ 8,  9, 10, 11]])>>>>>> b.sum(axis=0)                            # sum of each columnarray([12, 15, 18, 21])>>>>>> b.min(axis=1)                            # min of each rowarray([0, 4, 8])>>>>>> b.cumsum(axis=1)                         # cumulative sum along each rowarray([[ 0,  1,  3,  6],       [ 4,  9, 15, 22],       [ 8, 17, 27, 38]])


0 0
原创粉丝点击