Python突击(三)Numpy基础

目录

1.创建数组

2. 访问数组

3.数组裁剪

4.数据类型

5.副本/视图

6.数组常用属性

7.随机


1.创建数组

 array() 函数创建一个 NumPy ndarray 对象

import numpy as np
a = np.array([1,2,3,4,5]) #np.array([1,2,4],ndim = 3)指定数组的维度
print(a)
print(type(a))
#[1 2 3 4 5]
#<class 'numpy.ndarray'>

一维数组和二维数组(通常表示矩阵和二维张量),三维矩阵(两个二维矩阵组成)

import numpy as np
a = np.array([1,2,3])
b = np.array([[1,2,3],[4,5,6]])
c = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]) 
print(a)
print("\n",b)
print("\n",c)

print(a.ndim)
print(b.ndim)
print(c.ndim)

NumPy 有一个专门用于矩阵运算的完整子模块 numpy.mat

NumPy 数组提供了 ndim 属性,该属性返回一个整数,该整数会告诉我们数组有多少维。

2. 访问数组

和MATLAB中差不多。

import numpy as np
b = np.array([[1,2,3],[4,5,6]])
c = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]) 
print("\n",b)
print(b.ndim)
print(b[0,1])

3.数组裁剪

import numpy as np
arr = np.array([1,2,3,4,5,6,7])
print(arr[1:5])
#[2 3 4 5] 左开右闭

4.数据类型

默认情况下,Python 拥有以下数据类型

  • strings - 用于表示文本数据,文本用引号引起来。例如 "ABCD"。 
  • integer - 用于表示整数。例如 -1, -2, -3。
  • float - 用于表示实数。例如 1.2, 42.42。
  • boolean - 用于表示 True 或 False。
  • complex - 用于表示复平面中的数字。例如 1.0 + 2.0j,1.5 + 2.5j。

NumPy 有一些额外的数据类型,并通过一个字符引用数据类型,例如 i 代表整数,u 代表无符号整数等。

以下是 NumPy 中所有数据类型的列表以及用于表示它们的字符。

  • i - 整数
  • b - 布尔
  • u - 无符号整数
  • f - 浮点
  • c - 复合浮点数
  • m - timedelta
  • M - datetime
  • O - 对象
  • S - 字符串
  • U - unicode 字符串
  • V - 固定的其他类型的内存块 ( void )

NumPy 数组对象有一个名为 dtype 的属性,该属性返回数组的数据类型。

import numpy as np
a = np.array([1,2,3])
print(a.dtype)  # int32
#print(type(a))

5.副本/视图

副本和数组视图之间的主要区别在于副本是一个新数组,而这个视图只是原始数组的视图。副本拥有数据,对副本所做的任何更改都不会影响原始数组,对原始数组所做的任何更改也不会影响副本。视图不拥有数据,对视图所做的任何更改都会影响原始数组,而对原始数组所做的任何更改都会影响视图。

import numpy as np
a = np.array([1,2,3,4,5])
# 创建视图
x = a.view()
# 创建副本
# x = a.copy()
a[0] = 61
print(a)
print(x)
# 视图
#[61  2  3  4  5]
#[61  2  3  4  5]

#副本
#[61  2  3  4  5]
#[1 2 3 4 5]

副本拥有数据,而视图不拥有数据,每个 NumPy 数组都有一个属性 base,如果该数组拥有数据,则这个 base 属性返回 None。否则,base 属性将引用原始对象。

import numpy as np

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

x = arr.copy()
y = arr.view()

print(x.base)
print(y.base)

# None
# [1 2 3 4 5]

6.数组常用属性

  • NumPy 数组有一个名为 shape 的属性,该属性返回一个元组,每个索引具有相应元素的数量。
  • 重塑数组reshape属性,返回的是视图
  • 将多维数组转换为 1D 数组reshape(-1)
import numpy as np
arr = np.array([1,2,3,4,5,6])# 一维数组
print(arr)
arr1 = arr.reshape(2,3) # 重塑为二维数组
print(arr1)
print(new_arr.base) # 重塑后返回的是视图不是副本
arr2 = arr1.reshape(-1) # 重塑为一维数组
print(arr2)

结果如下所示

  • 数组拼接concatenate(,axis=) 函数,hstack() 沿行堆叠,vstack() 沿列堆叠,dstack() 沿高度堆叠
  • 排序
  • 拆分

7.随机

NumPy 提供了 random 模块来处理随机数。

  • 生成随机数
from numpy import random
a = random.randint(100)
print(a)
  • 生成随机数组
from numpy import random
a = random.randint(100,size=(2,3))#生成二维数组
print(a)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

吾日叁問

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

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

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

打赏作者

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

抵扣说明:

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

余额充值