Numpy-02核心array对象以及创建array的方法

Numpy的核心array对象以及创建array的方法

array对象的背景:

​ Numpy的核心数据结构,就叫做array就是数组,array对象可以是一维数组,也可以是多维数组

​ Python的List也可以实现相同的功能,但是array比List的优点在于性能好、包含数组元数据信息、大量的便捷函数

​ Numpy成为事实上的Scipy、Pandas、Scikit-Learn、Tensorflow等框架的“通用底层语言”

​ Numpy的array和Python的List的一个区别,是它元素必须都是同一种数据类型,比如都是数字int类型,这也是Numpy高性能的一个原因

array本身的属性:

​ shape:返回一个元组,表示array的维度

​ ndim:一个数字,表示array的维度的数目

​ size:一个数字,表示array中所有数据元素的数目

​ dtype:array中元素的数据类型

创建array的方法:

​ 从Python的列表List和嵌套列表创建array

​ 使用预定函数arange、ones/ones_like、zeros/zeros_like、empty/empty_like、full/full_like、eye等函数创建

​ 生成随机数的np.random模块构建

array本身支持的大量操作和函数:

​ 直接逐元素的加减乘除等算数操作

​ 更好用的面向多维的数组索引

​ 求sum/mean等聚合函数

​ 线性代数函数,比如求解逆矩阵、求解方程组


1.使用Python的List和嵌套List创建一维的array和二维的array

In [1]:

import numpy as np

In [4]:

# 创建一个一维数组,也就是Python的单元素List
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])

In [6]:

x

Out[6]:

array([1, 2, 3, 4, 5, 6, 7, 8])

In [5]:

# 创建一个二维数组,也就是Python的嵌套List
X = np.array([
    [1, 2, 3, 4],
    [5, 6, 7, 8]
])

In [7]:

X

Out[7]:

array([[1, 2, 3, 4],
       [5, 6, 7, 8]])

2.探索数组array的属性

In [7]:

x.shape

Out[7]:

(8,)

In [8]:

X.shape

Out[8]:

(2, 4)

In [9]:

x.ndim    # 维度

Out[9]:

1

In [10]:

X.ndim

Out[10]:

2

In [11]:

x.size    # 元素个数

Out[11]:

8

In [12]:

X.size

Out[12]:

8

In [13]:

x.dtype    # 数组类型

Out[13]:

dtype('int32')

In [14]:

X.dtype

Out[14]:

dtype('int32')

3.创建array的便捷函数

使用arange创建数组序列

arange([star,] stop[,step], dtype=None)

In [15]:

np.arange(10)

Out[15]:

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [16]:

np.arange(2, 10, 2)    # 开始数字、结束数字、步长

Out[16]:

array([2, 4, 6, 8])
使用ones创建全是1的数组

np.ones(shape, dtype=None, order=‘C’) shape:int or tuple of ints Shape of the new array

In [2]:

np.ones(10)

Out[2]:

array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

In [3]:

np.ones((2, 3))    # 2行3列,里面全是1

Out[3]:

array([[1., 1., 1.],
       [1., 1., 1.]])
使用ones_like创形状相同的数组

ones_like(a, dtype=float, order=‘C’)

In [8]:

np.ones_like(x)

Out[8]:

array([1, 1, 1, 1, 1, 1, 1, 1])

In [9]:

np.ones_like(X)

Out[9]:

array([[1, 1, 1, 1],
       [1, 1, 1, 1]])
使用zeros创建全是0的数组

np.zeros(shape, dtype=None, order=‘C’)

In [10]:

np.zeros(10)

Out[10]:

array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

In [11]:

np.zeros((2, 4))

Out[11]:

array([[0., 0., 0., 0.],
       [0., 0., 0., 0.]])
使用zeros_like创建形状相同的数组

np.zeros_like(a, dtype=None)

In [12]:

np.zeros_like(x)

Out[12]:

array([0, 0, 0, 0, 0, 0, 0, 0])

In [13]:

np.zeros_like(X)

Out[13]:

array([[0, 0, 0, 0],
       [0, 0, 0, 0]])
使用empty创建全是0的数组

empty(shape, dtype=float, order=‘C’) 注意:数据是未初始化的,里面的值可能是随机值不要用

In [14]:

np.empty(10)

Out[14]:

array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

In [15]:

np.empty((2, 4))

Out[15]:

array([[0., 0., 0., 0.],
       [0., 0., 0., 0.]])
使用empty_like创建形状相同的数组

empty_like(prototype, dtype=None)

In [16]:

np.empty_like(x)

Out[16]:

array([        0,         1,         0, 309460992,      1208,         0,
             768,         0])

In [17]:

np.empty_like(X)

Out[17]:

array([[         0,          1,          0, 1988385690],
       [      1336,          0,        768,        707]])
使用full创建指定值的数组

np.full(shape, fill_value, dtype=None, order=‘C’) fill_value:指定数值

In [18]:

np.full(10, 666)

Out[18]:

array([666, 666, 666, 666, 666, 666, 666, 666, 666, 666])

In [19]:

np.full((2, 4), 333)

Out[19]:

array([[333, 333, 333, 333],
       [333, 333, 333, 333]])
使用full_like创建形状相同的数组

np.full_like(a, fill_value, dtype=None)

In [20]:

np.full_like(x, 666)

Out[20]:

array([666, 666, 666, 666, 666, 666, 666, 666])

In [21]:

np.full_like(X, 333)

Out[21]:

array([[333, 333, 333, 333],
       [333, 333, 333, 333]])
使用random模块生成随机数的数组

randn(d0, d1, …, dn)

In [23]:

np.random.randn()

Out[23]:

1.3041274823851632

In [24]:

np.random.randn(3)

Out[24]:

array([-1.69559411, -0.28996081, -1.10831168])

In [25]:

np.random.randn(3, 2)

Out[25]:

array([[-0.55100232, -0.15160487],
       [ 1.09386724, -0.50999178],
       [ 0.41499733,  0.67933198]])

In [27]:

np.random.randn(3, 2, 4)    # 3块,2行4列

Out[27]:

array([[[-1.16017962,  1.17335421, -2.03851722,  0.33950939],
        [ 1.21621513,  0.40530914,  1.29053155,  1.066148  ]],

       [[ 2.04862603,  1.3433794 ,  0.64982287,  2.01987309],
        [ 0.77094165, -1.38293916,  0.62931037, -0.27179504]],

       [[-1.09746065, -0.4765639 ,  1.36222581, -0.79928358],
        [ 0.38376556,  0.26577652, -0.7644308 ,  0.78739805]]])

4.array本身支持的大量操作和函数

这些操作如果用Python实现需要写很多for循环,用numpy数组很容易

In [28]:

A = np.arange(10).reshape(2, 5)
A

Out[28]:

array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

In [29]:

A.shape

Out[29]:

(2, 5)

In [30]:

A + 1

Out[30]:

array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])

In [31]:

A * 3

Out[31]:

array([[ 0,  3,  6,  9, 12],
       [15, 18, 21, 24, 27]])

In [32]:

np.sin(A)

Out[32]:

array([[ 0.        ,  0.84147098,  0.90929743,  0.14112001, -0.7568025 ],
       [-0.95892427, -0.2794155 ,  0.6569866 ,  0.98935825,  0.41211849]])

In [33]:

np.exp(A)

Out[33]:

array([[1.00000000e+00, 2.71828183e+00, 7.38905610e+00, 2.00855369e+01,
        5.45981500e+01],
       [1.48413159e+02, 4.03428793e+02, 1.09663316e+03, 2.98095799e+03,
        8.10308393e+03]])

In [34]:

B = np.random.randn(2, 5)
B

Out[34]:

array([[ 0.14087986, -0.07174085, -1.14846743,  1.27173537,  1.04192297],
       [ 0.65623103,  0.07865785,  1.4392768 , -0.59106566,  1.71705766]])

In [35]:

A + B

Out[35]:

array([[ 0.14087986,  0.92825915,  0.85153257,  4.27173537,  5.04192297],
       [ 5.65623103,  6.07865785,  8.4392768 ,  7.40893434, 10.71705766]])

In [36]:

A - B

Out[36]:

array([[-0.14087986,  1.07174085,  3.14846743,  1.72826463,  2.95807703],
       [ 4.34376897,  5.92134215,  5.5607232 ,  8.59106566,  7.28294234]])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值