Numpy简易教程1——创建数组对象

创建数组对象

NumPy提供了两种基本的对象:ndarray(N-dimensional Array Object)和ufunc(Universal Function Object)。
ndarray(下文统一称为数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。

1. 数组属性

为了更好地理解和使用数组,了解数组的基本属性是十分有必要的。
属性 说明 ndim

返回 int。表示数组的维数
shape

返回 tuple。表示数组的尺寸,对于 n 行 m 列的矩阵,形状为(n,m)
size

返回 int。表示数组的元素总数,等于数组形状的乘积
dtype

返回 data-type。描述数组中元素的类型
itemsize

返回 int。表示数组的每个元素的大小(以字节为单位)。

2.数组创建

array 函数

NumPy提供的 array函数可以创建一维或多维数组,基本使用语法如下。

numpy.array(object, dtype=None, copy=True, order='K',subok=False, ndmin=0)

array函数的主要参数及其说明如下表所示。
参数名称 说明 object

接收array。表示想要创建的数组。无默认。
dtype

接收data-type。表示数组所需的数据类型。如果未给定,则选择保存对象所需的最小类型。默认为None。
ndmin

接收int。指定生成数组应该具有的最小维数。默认为None。

案例:展示创建一维数组与多维数组并查看数组属性


import numpy as np

arr1 = np.array([1, 2, 3, 4])
print(' 创建的数组为: ',arr1)
创建的数组为:  [1 2 3 4]

arr2 = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
print('创建的数组为:\n',arr2)
创建的数组为:
 [[ 1  2  3  4]
 [ 4  5  6  7]
 [ 7  8  9 10]]

print('数组类型为:',arr2.dtype)
print('数组元素个数为:',arr2.size)
print('数组每个元素大小为:',arr2.itemsize)
数组类型为: int32
数组元素个数为: 12
数组每个元素大小为: 4

数组arr1只有一行元素,因此它是一维数组。而数组arr2有3行4列元素,因此它是二维数组,其中第0轴的长度为3(即行数),第1轴的长度为4(即列数)。还可以通过修改数组的shape属性,在保持数组元素个数不变的情况下改变数组每个轴的长度。代码2-2将数组arr2的shape改为(4,3)。注意,从(3,4)改为(4,3)并不是对数组进行转置,而只是改变每个轴的大小,数组元素的顺序并没有改变。


arr2.shape = 4,3
print('重新设置shape 后的arr2 为:',arr2)
重新设置shape 后的arr2 为: [[ 1  2  3]
 [ 4  4  5]
 [ 6  7  7]
 [ 8  9 10]]

上面的例子都是先创建一个Python序列,然后通过array函数将其转换为数组,这样做显然效率不高。因此NumPy提供了很多专门用来创建数组的函数。

arange 函数

arange函数类似于 Python 自带的函数 range,通过指定开始值、终值和步长来创建一维数组,创建的数组不含终值。

print('使用arange函数创建的数组为:\n',np.arange(0,1,0.1))
使用arange函数创建的数组为:
 [0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]

linspace 函数

linspace函数通过指定开始值、终值和元素个数来创建一维数组,默认设置包括终值,这一点需要和 arange函数区分。

print('使用linspace函数创建的数组为:',np.linspace(0, 1, 12))
使用linspace函数创建的数组为: [0.         0.09090909 0.18181818 0.27272727 0.36363636 0.45454545
 0.54545455 0.63636364 0.72727273 0.81818182 0.90909091 1.        ]

logspace 函数

logspace函数和 linspace函数类似,它创建的是等比数列。

print('使用logspace函数创建的数组为:',np.logspace(0, 2, 20))
使用logspace函数创建的数组为: [  1.           1.27427499   1.62377674   2.06913808   2.6366509
   3.35981829   4.2813324    5.45559478   6.95192796   8.8586679
  11.28837892  14.38449888  18.32980711  23.35721469  29.76351442
  37.92690191  48.32930239  61.58482111  78.47599704 100.        ]

zeros 函数

zeros函数用来创建值全部为0的数组,即创建的数组值全部填充为0。

print('使用zeros函数创建的数组为:',np.zeros((2,3)))
使用zeros函数创建的数组为: [[0. 0. 0.]
 [0. 0. 0.]]

eye 函数

eye函数用来生成主对角线上的元素为1,其他的元素为0的数组,类似单位矩阵。

diag 函数

diag函数创建类似对角的数组,即除对角线以外的其他元素都为 0,对角线上的元素可以是0或其他值

ones 函数

ones函数用来创建元素全部为1的数组,即创建的数组元素全部填充为1。

3.数组数据类型

数据类型

在实际的业务数据处理中,为了更准确地计算结果,需要使用不同精度的数据类型。NumPy 极大程度地扩充了原生 Python 的数据类型,其中大部分的数据类型是以数字结尾的,这个数字表示其在内存中占有的位数。同时需要强调一点,在NumPy中,所有数组的数据类型是同质的,即数组中的所有元素类型必须是一致的。这样做的好处是,更容易确定该数组所需要的存储空间。NumPy的基本数据类型及其取值范围如下表所示。

Numpy简易教程1——创建数组对象

; 转换函数

对于NumPy数组中的数据类型,每一种数据类型均有其对应的转换函数。

print('转换结果为:',np.float64(42))
print('转换结果为:',np.int8(42.0))
print('转换结果为:',np.bool(42))
print('转换结果为:',np.bool(0))
print('转换结果为:',np.float(True))
print('转换结果为:',np.float(False))

转换结果为: 42.0
转换结果为: 42
转换结果为: True
转换结果为: False
转换结果为: 1.0
转换结果为: 0.0

案例:存储餐饮企业库存信息

下面将创建一个存储餐饮企业库存信息的数据类型。其中,用一个能存储 40 个字符的字符串来记录商品的名称,用一个 64 位的整数来记录商品的库存数量,最后用一个 64 位的单精度浮点数来记录商品的价格,具体步骤如下。
-(1)创建数据类型。

df = np.dtype([("name", np.str_, 40), ("numitems", np.int64),
    ("price",np.float64)])
print('数据类型为:',df)

-(2)查看数据类型,可以直接查看或者使用numpy.dtype函数查看,在使用array函数创建数组时,数组的数据类型默认是浮点型。

print('数据类型为:',df["name"])
print('数据类型为:',np.dtype(df["name"]))

自定义数组数据,则可以预先指定数据类型。

itemz = np.array([("tomatoes", 42, 4.14),("cabbages", 13, 1.72)],dtype=df)
print('自定义数据为:',itemz)

Original: https://blog.csdn.net/mighty13/article/details/119522327
Author: mighty13
Title: Numpy简易教程1——创建数组对象

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/762262/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球