04. numpy-创建ndarray

NumPy提供了很多的函数来快速的生成一个ndarray对象。

a = np.array([1,2,3],dtype = np.int8)
type(a)  # numpy.ndarray

示例

  • full和full_like:使用指定值来填充数组。
    b = np.full(shape = (3,2),fill_value=30)
    b
    # array([[30, 30],
    #        [30, 30],
    #        [30, 30]])
    b = np.full(shape = (3,2),fill_value=(9,7))
    b
    # array([[9, 7],
    #        [9, 7],
    #        [9, 7]])
    m = np.array([[1, 1, 1, 1, 1],[2, 2, 2, 2, 2],[3, 3, 3, 3, 3]])
    c = np.full_like(m,fill_value=0)
    c
    # array([[0, 0, 0, 0, 0],
    #        [0, 0, 0, 0, 0],
    #        [0, 0, 0, 0, 0]])

     

na1 = np.full((2,5),10)
# array([[10, 10, 10, 10, 10],
#        [10, 10, 10, 10, 10]])
na2 = np.full_like(np.array([0,1,2,3]),5)
# array([5, 5, 5, 5])
  • zeros和zeros_like:用来创建元素全是0的数组。
na1 = np.zeros(shape=(3, 2, 4))  # zeros必须要指定shape,用来生成一个指定形状的数组
# 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.]]])
na2 = np.zeros_like([1,2,3])  # 根据指定的列表(或数组)的格式,生成一个新的数组
# array([0, 0, 0])
  • ones和ones_like:用来创建元素全是1的数组。
na1 = np.ones(shape=(3,2,4))
# 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.]]])
na2 = np.ones_like([98,76,55])
# array([1, 1, 1])
  • array:将序列转换成为ndarray对象。
    # array方法可以将 range,list,tuple,set和dict等序列数据转换成为ndarray对象。
    na1 = np.array(range(10))  # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    na2 = np.array([1,2,3])  # array([1, 2, 3])
    na3 = np.array(('hello','good','yes'))  # array(['hello', 'good', 'yes'], dtype='<U5')
    na4 = np.array({98,78,99,95})  # array({98, 99, 78, 95}, dtype=object)
    na5 = np.array({'name':'zhangsan','age':18,'score':90})
    # array({'name': 'zhangsan', 'age': 18, 'score': 90}, dtype=object)
  • arange:根据一个序列生成一个数组,用法和Python里的range类使用基本一致。
na1 = np.arange(10)  # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
na2 = np.arange(3,20)  # array([ 3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
na3 = np.arange(2,20,3)  # array([ 2,  5,  8, 11, 14, 17])
  • linspace:生成一个线性数组。
# (10,100)包含开始,也包含结束,endpoint可以设置为False,这样就不包含结束了
b = np.linspace(1,9,num=5)
# array([1., 3., 5., 7., 9.])
  • fromfunction:使用指定的函数生成一个数组。
def func(i, j):
    print(f'i={i},j={j}')
    return i ** j


na1 = np.fromfunction(func, shape=(5, 5))
print(na1)
#  i=[[0. 0. 0. 0. 0.]
# [1. 1. 1. 1. 1.]
# [2. 2. 2. 2. 2.]
# [3. 3. 3. 3. 3.]
# [4. 4. 4. 4. 4.]],j=[[0. 1. 2. 3. 4.]
# [0. 1. 2. 3. 4.]
# [0. 1. 2. 3. 4.]
# [0. 1. 2. 3. 4.]
# [0. 1. 2. 3. 4.]]
#[[  1.   0.   0.   0.   0.]
# [  1.   1.   1.   1.   1.]
# [  1.   2.   4.   8.  16.]
# [  1.   3.   9.  27.  81.]
# [  1.   4.  16.  64. 256.]]
  • fromfile:将文件里的数据加载成为一个数组。
# 写入的时候默认是int32,取的时候也要指定int32类型
nd1 = np.array([1, 2, 3, 4])
nd1.tofile('./a.txt')
x = np.fromfile('./a.txt',dtype='int32')
print(x)  #[1 2 3 4]
  • np.diag:返回一个对角矩阵。
na = np.diag([1,2,3,4])
# array([[1, 0, 0, 0],
#        [0, 2, 0, 0],
#        [0, 0, 3, 0],
#        [0, 0, 0, 4]])
  • eye:返回一个二维的对角数组,其中对角线为1,零点为零。
nd = np.eye(N=5, M=7, k=-1)
# array([[0., 0., 0., 0., 0., 0., 0.],
#        [1., 0., 0., 0., 0., 0., 0.],
#        [0., 1., 0., 0., 0., 0., 0.],
#        [0., 0., 1., 0., 0., 0., 0.],
#        [0., 0., 0., 1., 0., 0., 0.]])
a = np.eye(5,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.]])
  • numpy.random包里提供了很多的方法,可以快速的生成一个数组。
    na1 = np.random.random(size=5)  #  生成指定 size 的 [0.0,1.0)随机浮点数
    # array([0.78705688, 0.28925238, 0.30152321, 0.78411459, 0.74078236])
    na2 = np.random.randint(5, 100, size=4) # 生成指定 size 的随机整数
    # array([42, 95, 52, 43])
    na3 = np.random.randn(3, 5)  # 生成正态分布的随机数组
    # array([[ 1.99137094, -0.29399036,  0.72920737,  0.07041465,  2.31167596],[-1.77122604,  1.09919848,  0.32331871, -0.60882009, -0.29951307],[ 0.18642218,  0.3319576 ,  0.24990004, -0.02141016,  1.71957341]])
    a = np.random.randint(5,9)  # 7
    a = np.random.randint(1,9,size=(3,3,3))
    # array([[[4, 7, 2],
    #         [5, 7, 1],
    #         [5, 8, 3]],
    
    #       [[7, 2, 3],
    #        [1, 7, 8],
    #        [5, 8, 1]],
    
    #       [[1, 1, 6],
    #        [4, 4, 3],
    #        [6, 1, 4]]])
    ​
  • reshape:改变形状
    a = np.arange(1,10)
    a.reshape(3,3)
    # array([[1, 2, 3],
    #        [4, 5, 6],
    #        [7, 8, 9]])

     

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南河Aure

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值