numpy的基本介绍

numpy的基本介绍

numpy最重要的是一个多维数组,ndarray对象 数组可以理解为列表,多维数组就是列表嵌套列表 出现的原因是numpy底层使用的是C 语言编写 和python里的list比较, 执行效率要高的多的多的多。

导入模块
import numpy as np(习惯改个名字 简单一点)

用jupyter 的里%timeit 计算代码运行的时间

%timeit sum(range(1000000))
#35 ms ± 277 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit np.sum(np.arange(1000000))
#2.24 ms ± 125 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

numpy里的求和的效率比直接使用sum的效率高了十倍不止。

numpy里最重要的数据结构是ndarray 这是一个多维数组

ndarray 的创建方式

1, 直接调用 numpy 里的array 方法得到一个ndarray对象

 a = np.array(
    [[
        [2,3,4],
        [2,3,4]
    ],
    [
        [2,3,4],
        [2,3,4]
    ]]
)

打印出来的 a是一个(2,2,3)的一个列表

[[[2 3 4]
[2 3 4]]

[[2 3 4]
[2 3 4]]]

2,full 和full_like 方法,需要shape和fill_value两个参数

b = np.full(shape=(5,2), fill_value=['77','7'])
c = np.full_like(a,fill_value=[7])

打印出来b = [[‘77’ ‘7’]
[‘77’ ‘7’]
[‘77’ ‘7’]
[‘77’ ‘7’]
[‘77’ ‘7’]]

c = array([[[7, 7, 7],
[7, 7, 7]],

  					 [[7, 7, 7],
   				 [7, 7, 7]]])

这里因为我实在jupyter’里面 直接打印了c 我用了print打印了b
在这里插入图片描述

3,ones 和 ones_like

d = np.ones(shape=(4,4))

返回一个(4,4)的列表 元素都是1

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

4,zeros 和 zeros_like

和ones 是一样的 只是里面的元素用0 填充

5,arange 生成指定序列数组

np.arange(2, 10).reshape(2,4) 
# 这是生成一个形状是(2,4) 元素是[2,10)的一个列表
#array([[2, 3, 4, 5],
#       [6, 7, 8, 9]])
np.random.normal(loc=7, size=(2,3,3))
#loc 是指定接近给定的数据
# 这是生成随机数 接近 7 的随机数 形状是(2,3,3)的 
#array([[[6.8208245 , 6.04934953, 7.68211542],
#        [6.23931205, 9.47065395, 5.08243697],
#       [6.51084257, 7.04377684, 7.31366509]],
#
#       [[5.72961768, 6.54448095, 6.23690148],
#        [6.07553398, 7.93632722, 5.84778843],
#        [6.69124011, 7.10721062, 6.15648761]]])
 

6, random 使用随机数生成序列, random可以指定 shape 里的参数

np.random.randint((2,10),size=(4,2))
 # randint是使用 size 这个参数 效果和shape是一样的
#array([[0, 5],
#       [0, 3],
#       [1, 7],
#       [1, 0]])

7,linspace 生成一个等差数列的数组

np.linspace(10, 100, num=12)
# [10,100] 分成12分的等差数列
#array([ 10.        ,  18.18181818,  26.36363636,  34.54545455,
#       42.72727273,  50.90909091,  59.09090909,  67.27272727,
#       75.45454545,  83.63636364,  91.81818182, 100.        ])

8, eye 生成一个对角为一的矩阵

np.eye(4, 6, k=1) # k 默认是 0
k 等于几 就从第一排的第几个开始取对角 对角用1 填充 其他的用0 填充
#array([[0., 1., 0., 0., 0., 0.],
#       	  [0., 0., 1., 0., 0., 0.],
#   		  [0., 0., 0., 1., 0., 0.],
#  		  [0., 0., 0., 0., 1., 0.]])

9, diag 将数组拆成对角矩阵

np.diag([1,2,3,4], k=1) #k 默认是0
# 用传入的数据作为对角矩阵的对角数据
#array([[0, 1, 0, 0, 0],
#       [0, 0, 2, 0, 0],
#       [0, 0, 0, 3, 0],
#       [0, 0, 0, 0, 4],
#       [0, 0, 0, 0, 0]])
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值