Numpy库入门

Numpy库入门

导入numpy
import numpy as np

上述写法是导入numpy的惯例写法

array的一些重要属性
a = np.array([[0, 1, 2, 3, 4], [9, 8, 7, 6, 5]])
a.dim

2

a.dim表示a的维度个数,显然a是个二维的

a.shape

(2, 5)

a.shape表示a的维度信息,(2, 5)表示的是a是2 x 5 的从外到里

a.size

10

a.size表示a的元素个数

a.dtype
dtype('int32')

a.dtype表示的是a的元素类型

a.itemsize

4

a.itemsize表示的是a的单个元素所占的字节数

创建array的方法

通过列表创建

x = np.array([0, 1, 2, 3])
x
array([0, 1, 2, 3])

通过元组创建

x = np.array((4, 5, 6, 7))

通过列表和元组的混合类型创建

x = np.array([[1, 2], [9, 8], (0.1, 0.2)])
print(x)
[[1.  2. ]
 [9.  8. ]
 [0.1 0.2]]
array的一些常用的函数

arange 生成序列

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

ones 生成指定维度,值全为1的array

np.ones((3, 6))
array([[1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.]])

ones默认创建的数据类型为浮点类型

zeros 生成指定维度,值全为0的array

np.zeros((3, 6), dtype=np.int32)
array([[0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0]])

可以通过参数dtype来指定生成数据类型

eye 生成n阶单位矩阵

np.eye(5)
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])

linspace 创建从指定数据开始到指定数据结束的含有指定个数的array

a = np.linspace(1, 10, 4) # 创建从1开始到10等差的含有4个元素的array 默认数据累心为np.float
a
array([ 1.,  4.,  7., 10.])

其中参数endpoint=True, 表示生成的array中包含终点数据,若endpoint=False表示终点数据不在生成的array中

b = np.linspace(1, 10, 4, endpoint=False) # 创建从1开始到10含有4个元素的(不包括10) 的array
b
array([1.  , 3.25, 5.5 , 7.75])

concatenate 将两个或者若干个元素合并起来

c = np.concatenate((a, b))
c
array([ 1.  ,  4.  ,  7.  , 10.  ,  1.  ,  3.25,  5.5 ,  7.75])

reshape 修改array数组的维度

a = np.ones((2, 3, 4), dtype=np.int32)
a.reshape((3,8))
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]])

值得一提的是reshape函数并不会改变原array,而是形成一个新array

a
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]]])

在运行完a.reshape后,a的维度没有发生改变

resize 而相反地,resize函数同为修改array维度的函数却会改变原array

a.reshape((3,8))

a
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]])

flatten 把array降为一维 不修改原数组

a.flatten()
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])
a
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]])

astype 构造指定类型,维度和值等和本array一样的array

a = np.ones((2, 3, 4), dtype=np.int)
a
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]]])
b = a.astype(np.float)
b
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.]]])

full 生成一个指定维度,元素全为指定的值的array

a = np.full((2, 3, 4), 25, dtype=np.int)
a
array([[[25, 25, 25, 25],
        [25, 25, 25, 25],
        [25, 25, 25, 25]],

       [[25, 25, 25, 25],
        [25, 25, 25, 25],
        [25, 25, 25, 25]]])

tolist 将array转化成列表

a.tolist()
[[[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]],
 [[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]]]
对array元素的操作
a = np.array([9, 8, 7, 6, 5])
a[2]

7

a[1:4:2] # 对array做切片操作,得到的仍然是array
array([8, 6])

当array的维度不是一维时

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

23

a[0, 1, 2]

6

a[-1,-2,-3]

17

a[:, 1, -3]
array([ 5, 17])

array的数学运算函数

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

mean 求array的算术平均数

11.5

square 求array每一个元素的平方

np.square(a)
array([[[  0,   1,   4,   9],
        [ 16,  25,  36,  49],
        [ 64,  81, 100, 121]],

       [[144, 169, 196, 225],
        [256, 289, 324, 361],
        [400, 441, 484, 529]]], dtype=int32)

sqrt 求array每一个元素的开方

a = np.sqrt(a)
a
array([[[0.        , 1.        , 1.41421356, 1.73205081],
        [2.        , 2.23606798, 2.44948974, 2.64575131],
        [2.82842712, 3.        , 3.16227766, 3.31662479]],

       [[3.46410162, 3.60555128, 3.74165739, 3.87298335],
        [4.        , 4.12310563, 4.24264069, 4.35889894],
        [4.47213595, 4.58257569, 4.69041576, 4.79583152]]])

modf 将array的整数部分和小数部分分离

np.modf(a)
(array([[[0.        , 0.        , 0.41421356, 0.73205081],
         [0.        , 0.23606798, 0.44948974, 0.64575131],
         [0.82842712, 0.        , 0.16227766, 0.31662479]],
 
        [[0.46410162, 0.60555128, 0.74165739, 0.87298335],
         [0.        , 0.12310563, 0.24264069, 0.35889894],
         [0.47213595, 0.58257569, 0.69041576, 0.79583152]]]),
 array([[[0., 1., 1., 1.],
         [2., 2., 2., 2.],
         [2., 3., 3., 3.]],
 
        [[3., 3., 3., 3.],
         [4., 4., 4., 4.],
         [4., 4., 4., 4.]]]))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值