numpy要点总结

numpy库与python的基础语法有细微的区别,但大致上是一致的

NumPy(Numerical Python)是 Python 中一个基础且强大的科学计算库,为 Python 提供了高效的多维数组对象以及处理这些数组的工具。

 numpy数组与python列表区别:

        NumPy 数组是同质数据类型(homogeneous),即数组中的所有元素必须是相同的数据类型。数据类型在创建数组时指定,并且数组中的所有元素都必须是该类型

        Python 列表是异质数据类型(heterogeneous),即列表中的元素可以是不同的数据类型。列表可以包含整数、浮点数、字符串、对象等各种类型的数据。

一.ndarray对象:

         1.创建数组的方式:

(1)array创建数组
numpy.array(object, dtype = None, copy = True, order = None,ndmin = 0)

解释: 
object:该参数可以是列表,元组,字典,集合,字符串,range()函数等可迭代对象
import numpy as np   # 导入numpy库
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])   # 列表
print(arr)
print(type(arr))

arr01 = np.array((1, 2, 3, 4, 5, 6, 7, 8))   # 元组
print(arr01)
print(type(arr01))

arr02 = np.array(range(10))    # range()函数
print(arr02)
print(type(arr02))

 关于集合,字典作为object可迭代对象的参数,其打印结果有点不知其原因,

正在查找资料...

set01 = set(range(9))
arr03 = np.array(set01)  # 集合
print(arr03)
print(type(arr03))

arr04 = np.array('qwertyuiop')   # 字符串
print(arr04)
print(type(arr04))

arr05 = np.array({'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5})   # 字典
print(arr05)
print(type(arr05))

dtype:可以改变数组的数据类型,默认为数据本身的类型,既可以在初始化时设置数据类型,也可以查看数据类型
import numpy as np
arr = np.array([1, 2, 3, 4, 5], dtype=str)   # 原数据类型为整数型,转换为字符类型
print(arr)                # ['1' '2' '3' '4' '5']
print(arr.dtype)        # 查看数据类型 <U1,在NumPy中,U表示Unicode字符串,数字1表示字符串的最大长度这里每个字符串的最大长度为1d
print(type(arr))

copy: 可选参数,表示数组能否被复制,默认是 True。

当 copy=True 时,会创建输入数据的一个副本,对新数组的修改不会影响原始数据,反之亦然

当 copy=False 时,如果输入的数据本身就是一个 numpy.ndarray 对象,那么不会创建新的副本,而是返回对原数组的一个引用(视图)。此时,对新数组的修改会影响原始数组,反之亦然。 

import numpy as np
original = np.array([1, 2, 3])
new_array = np.array(original, copy=True)
# 修改新数组
new_array[0] = 100
print(original)  # 输出: [1 2 3]
print(new_array)  # 输出: [100 2 3]
import numpy as np
original = np.array([1, 2, 3])
new_array = np.array(original, copy=False)
# 修改新数组
new_array[0] = 100
print(original)  # 输出: [100 2 3]
print(new_array)  # 输出: [100 2 3]
补充:切片和copy()方法

copy() 方法:numpy.ndarray 对象有一个 copy() 方法,调用该方法会创建数组的一个完整副本

import numpy as np
original = np.array([1, 2, 3])
new_array = original.copy()
# 修改新数组
new_array[0] = 100
print(original)  # 输出: [1 2 3]
print(new_array)  # 输出: [100 2 3]

 切片:返回的是数组的视图,不会复制数据,只是提供了一种不同的方式来访问原数组的数据。

import numpy as np
original = np.array([1, 2, 3, 4, 5])
view = original[1:3]
# 修改视图
view[0] = 100
print(original)  # 输出: [1 100 3 4 5]
print(view)  # 输出: [100 3]

注意:

冒号 : 的作用

  • 表示范围: 冒号用于表示一个范围。例如,array[1:3] 表示从索引 1 到索引 3(不包括 3)的元素。

  • 表示所有元素: 单独使用冒号表示所有元素。例如,array[:, 1] 表示所有行的第 1 列。

  • 步长: 双冒号后面可以跟一个步长值,表示每隔多少个元素取一个。例如,array[::2] 表示每隔一个元素取一个

注:冒号对于一维数组按索引号截取,二维数组按行和列截取。

省略号 ... 的作用

  • 表示所有维度: 省略号用于表示数组的所有维度。例如,array[..., 1] 表示取所有行的第 1 列。

  • 简化多维切片: 在多维数组中,省略号可以简化切片操作,避免显式地写出所有维度的索引。例如,一个4维的随机数组 arr,形状为 (2, 3, 4, 5)。在切片操作arr[0, ...]0表示选取第1个维度的第0个元素,...表示其余维度全选。这样就避免了显式写出 arr[0, :, :, :]。  

order: 以哪种内存布局创建数组,有三个常用的取值:'C''F' 和 'A' ,一个不太常用的 'K'

1. order='C'(C 风格顺序,C-style order)

  • 含义:采用行优先(row-major)的存储方式。在多维数组中,先存储第一行的所有元素,接着是第二行的元素,依此类推。对于一个二维数组 arr ,其元素在内存中是按行依次排列的,即 arr[0, 0]arr[0, 1]arr[0, 2] ... arr[1, 0]arr[1, 1] ... 。

  • 适用场景:C 和 Python 语言通常使用行优先的存储方式,因此当与这些语言编写的代码交互或者进行按行访问的操作时,使用 order&

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值