Numpy学习(一)—— ndarray 对象

numpy是Python的一个科学计算模块,在numpy中,使用ndarray对象表示数组,它是整个库的核心,numpy中所有的操作都围绕ndarray对象进行处理。
ndarray 是存储单一数据类型的多维数组。

1、创建数组

首先需要创建数组,可以利用array()函数

import numpy as np
a = np.array([1,2,3])
b = np.array([[2,3,4],[3,4,5]])
print (a,b)

结果

array([1,2,3])
array([[2,3,4],[3,4,5]])

数组的形状可以通过shape属性来获得,它是一个描述数组各个轴的长度的元祖

print(a.shape,b.shape)

结果:

(3,)    #有一个元素表示是一维数组,shape的元组里有几个元素就表示这个数组是几维的
(2,3)

还可以通过修改数组的shape属性,在保持数组元素个数不变的情况下,改变数组每个轴的长度,

b.shape = 3,2

再看b

array([[2, 3],
       [4, 3],
       [4, 5]])

注意从(2,3)改成(3,2)并不是对数组进行转置,而只是改变每个轴的大小,数组元素在内存中的位置并没有改变。
当设置某个轴的元素个数为-1时,将自动计算此轴的长度。由于数组b有6个元素,因此下面的程序将数组b的shape属性改成了(1,6):

b.shape = 6,-1
array([[2],
       [3],
       [4],
       [3],
       [4],
       [5]])

使用数组的reshape()方法,可以创建指定形状的新数组,而原数组的形状保持不变

c = a.reshape((3,1))
>>> c
array([[1],
       [2],
       [3]])
>>> a
array([1, 2, 3])

数组a和c其实共享数据存储空间,因此修改其中任意一个数组的元素都会同时修改另一个数组的内容:

>>> a[1] = 100
>>> a
array([  1, 100,  3])
>>> c
array([[  1],
       [100],
       [  3]])
>>> 

2、元素类型

数组的元素类型可以通过dtype属性获得,我使用的是64位操作系统和Python,那么默认整数类型的长度为64位。

>>> c.dtype
dtype('int64')

可以通过dtype参数在创建数组时指定元素类型,注意float类型是64位的双精度浮点类型,而complex是128位的双精度复数类型:

>>> ai = np.array([1,2,3,4],dtype=np.int32)
>>> af = np.array([1,2,3,4],dtype=float)
>>> ac = np.array([1,2,3,4],dtype=complex)
>>> ai.dtype
dtype('int32')
>>> af.dtype
dtype('float64')
>>> ac.dtype
dtype('complex128')

使用astype()方法可以对数组的元素类型进行转换:

>>> ac.astype(np.int32)
array([1, 2, 3, 4], dtype=int32)
>>> ac.astype(np.float)
array([1., 2., 3., 4.])

3、自动生成数组
arange()类似于内置函数range(),通过指定开始值、终值和步长来创建表示等差数列的一维数组,注意所得到的结果中不包含终值。

>>> np.arange(0,1,0.1)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])

linspace()通过指定开始值、终值和元素个数来创建表示等差数列的一维数组,可以通过endpoint参数指定是否包含终值,默认值为True,即包含终值。

>>> np.linspace(0,1,10)
array([0.        , 0.11111111, 0.22222222, 0.33333333, 0.44444444,
       0.55555556, 0.66666667, 0.77777778, 0.88888889, 1.        ])
>>> np.linspace(0,1,10,endpoint=False)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])

logspace()和linspace()类似,不过它所创建的数组是等比数列:

>>> np.logspace(0,2,5)
array([  1.        ,   3.16227766,  10.        ,  31.6227766 ,
       100.        ])

基数可以通过base参数指定,其默认值为10

>>> np.logspace(0,1,12,base=2,endpoint=False)
array([1.        , 1.05946309, 1.12246205, 1.18920712, 1.25992105,
       1.33483985, 1.41421356, 1.49830708, 1.58740105, 1.68179283,
       1.78179744, 1.88774863])

zeros()、ones()、empty()可以创建指定形状和类型的数组。其中empty()只分配数组所使用的内存,不对数组元素进行初始化操作,因此它的运行速度是最快的,而zeros()将数组初始化为0,ones()将数组初始化为1。

>>> np.empty((2,3),np.int)
array([[139729897318376,        22601424,               0],
       [    55834574849,               0, 139728171040769]])
>>> np.zeros((2,3),np.int)
array([[0, 0, 0],
       [0, 0, 0]])
>>> np.ones((2,3),np.int)
array([[1, 1, 1],
       [1, 1, 1]])

full()将数组元素初始化为指定值:

>>> np.full((2,3),np.pi)
array([[3.14159265, 3.14159265, 3.14159265],
       [3.14159265, 3.14159265, 3.14159265]])
>>> np.full((2,3),12)
array([[12, 12, 12],
       [12, 12, 12]])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
numpy.ndarrayndarray是同一个概念,都是指NumPy库中的多维数组对象。\[1\] \[3\] NumPy是一个用于科学计算的Python库,它提供了高性能的多维数组对象以及丰富的数值计算方法和功能。ndarrayNumPy库中用于表示多维数组的数据类型,它可以存储相同类型的数据,并且支持丰富的数值计算操作,如矩阵运算、图像处理等。\[1\] \[3\] 在使用NumPy库时,我们可以使用import语句导入NumPy库,并使用np来表示它。然后,我们可以使用np.array()函数来创建一个numpy.ndarrayndarray对象,该对象可以存储多维数组数据。\[1\] \[3\] 总结来说,numpy.ndarrayndarray是同一个概念,都是指NumPy库中的多维数组对象,用于存储相同类型的数据并支持丰富的数值计算操作。 #### 引用[.reference_title] - *1* [NDArraynumpy.ndarray 互相转换](https://blog.csdn.net/xiaotao_1/article/details/79594802)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [48_Python列表和数组与numpy.ndarray的区别和使用方法](https://blog.csdn.net/qq_18351157/article/details/121414780)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值