编程语言
首页 > 编程语言> > python科学计算2 数据组织形式与numpy入门

python科学计算2 数据组织形式与numpy入门

作者:互联网

1 数据组织

1.1 单个数据

一个整数可以表示一个数据,就是单个数据

1.2 数据组织

一堆数据组成一个整体,就是数据组织。python中常见的数据组织形式有列表,元组,字典,集合等等。

1.3 数据组织的形式

1.3.1一维数据

可以用普通的一维列表或者元组或者一维集合组织。

#一维数据
list1=[1,2,3]
set1=set(list1)

1.3.2 二维数据

列表或元祖的的二层嵌套

# 二维数据
list2=[[1,2,3],[4,5,6]]

1.3.3 多维数据

列表或者集合的多层嵌套,有几层括号就可以看作是几维数据。

1.3.4 高维数据

按照字面意思来说高维数据应该和多维数据意思差不多,其实不是这样,高维数据就是用键值对表示的,因此可以用python的字典数据类型表示高维数据。

#高维数据
dict1={
       "firstName":"huang"
        }

1.4普通数据组织的缺点

1.数据元素的类型不确定。例如下面的列表中有数字有字符串

list3=[1,2,"dasfasdf"]

2.对于不同的数据类型可能会有不同的运算,对于同一个组织里面的数据一般的运算应该是相同的。
例如这个组织3就是每个元素的值3.
3.不同的数据类型占据的空间不同,在大规模的运算中会降低效率
举例
这是利用普通的数据类型进行组织数据

def add1():
    a=[1,2,3,4,5]
    b=[1,2,3,4,5]
    c=[]
    
    for i in range(len(a)):
        c.append(a[i]+b[i])
    
    return c

print(add1())

利用特殊的类型进行组织,以矩阵为单位,看起来简单多了,

import numpy as np
def add2():
    a=np.array([1,2,3,4,5])
    b=np.array([1,2,3,4,5])
    c=a+b
    return c

print(add2())

2 numpy入门

NumPy是一个开源的Python科学计算基础库,包含:
• 一个强大的N维数组对象 ndarray
• 广播功能函数
• 整合C/C++/Fortran代码的工具
• 线性代数、傅里叶变换、随机数生成等功能
NumPy是SciPy、Pandas等数据处理或科学计算库的基础

2.1 ndarray对象介绍

1.在上面的例子里我们已经知道ndarray的优越性,把矩阵封装为ndarray对象,重载了运算符,提供了一系列的实例方法。
ndarray是一个多维数组对象,也可以叫做矩阵对象,由两部分构成:
• 实际的数据
• 描述这些数据的元数据(数据维度、数据类型等)
2.创建简单的ndarry对象

ndarray(列表或元组)

可以这样创建简单矩阵和高维矩阵

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

2.2 ndarray的常用属性

2.2.1 与元素数量有关的属性1

1.属性说明

属性 说明
ndim 秩,即轴的数量或维度的数量
.shape ndarray对象的尺度,对于矩阵,n行m列
.size ndarray对象元素的个数,相当于.shape中n*m的值

2.属性解释
(1)轴和秩。(注意这里的秩与线性代数里的秩不是同一个概念,在这里要把自己想的笨一点,其实很简单)。
例如一个

test=np.array([[1,2,3],
                [4,5,6]])

二维数组(矩阵),有横轴和纵轴两个轴,那么秩为2,可以把它当作平面空间。元素6的轴为0(x轴)的值为1,轴为1(y轴)的值为2,可以认为他的索引是[1][2]
在这里插入图片描述

(2)其余的两个属性解释参考上面的表格。
3.属性实战

test=np.array([[1,2,3],
                [4,5,6]])
#test.ndim表示秩的数量
print(test.ndim)
print(test.shape)
print(test.size)
2
(2, 3)
6

2.2.2与元素类型有关的属性

1.属性说明

属性 说明
.dtype ndarray对象的元素类型
.itemsize ndarray对象中每个元素的大小,以字节为单位

2.属性解释
(1)
不同的数据类型占的字节会不同空间大小,同时整形,浮点型,复数型下面也有好多的细分,不同的特定的类型占有不同的大小
精度整数(默认int32)<浮点数(默认float64)<复数(默认complex128),如果有一个元素是精度更高的,所有的元素都跟着精度高的元素进行转换

#整数
test1=np.array([[1,2,3],
                [4,5,6]])
print(test1,test1.dtype)
#浮点数
test2=np.array([[1,2,3.1],
                [4,5,6]])
print(test2,test2.dtype)
#复数
test3=np.array([[1,2,1+2j],
                [4,5,6]])
print(test3,test3.dtype)

[[1 2 3]
 [4 5 6]] int32
[[1.  2.  3.1]
 [4.  5.  6. ]] float64
[[1.+0.j 2.+0.j 1.+2.j]
 [4.+0.j 5.+0.j 6.+0.j]] complex128

(2)numpy支持的数据类型(不包含字符,因为字符不用做科学计算)
类型后面的数字表示占了多少位的空间

数据类型 说明
布尔类型 True或False
intc 与C语言中的int类型一致,一般是int32或int64
intp 用于索引的整数,与C语言中ssize_t一致,int32或int64
int8 字节长度的整数,取值:[‐128, 127]
int16 16位长度的整数,取值:[‐32768, 32767]
int32 32位长度的整数,取值:[‐2
int64 64位长度的整数,取值:[‐2
uint8 8位无符号整数,取值:[0, 255]
uint16 16位无符号整数,取值:[0, 65535]
uint32 32位无符号整数,取值:[0, 2
uint64 32位无符号整数,取值:[0, 2
float16 16位半精度浮点数:1位符号位,5位指数,10位尾数
float32 32位半精度浮点数:1位符号位,8位指数,23位尾数
float64 64位半精度浮点数:1位符号位,11位指数,52位尾数
complex64 复数类型,实部和虚部都是32位浮点数

3.属性实战

print(test.dtype)
print(test.itemsize)
int32
4

4.一种特殊的类型object
如果传入的数组像下面这种情况,列表不整齐(我也不知道怎么形容),就会认为一个list数组是一个元素。同时如果元素不是基本元素,是自定义的对象,也会认为是object

test4=np.array([[1,2,3],
                [4,5]])
print(test4,test4.dtype)
[list([1, 2, 3]) list([4, 5])] object

标签:python,数据,数据类型,np,print,数据组织,array,numpy,ndarray
来源: https://blog.csdn.net/weixin_44055272/article/details/89142706