首页 > 其他分享 >numpy之003ndarray

numpy之003ndarray

时间:2023-12-10 17:23:55浏览次数:34  
标签:arr dtype 数据类型 print 003ndarray np array numpy

numpy常用的函数和属性

 

函数

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

  • object:任何暴露数组接口方法的对象,通常是列表或元组。
  • dtype:数组的所需数据类型,可选。
  • copy:默认为True,意味着创建对象的副本。如果设置为False,则尝试使用原始对象。
  • order:{'C', 'F', 'A', 'K'},指定数组的内存布局。'C'代表C语言风格,'F'代表Fortran风格,'A'代表'F'如果原数组是Fortran连续的,否则是'C','K'代表尽可能保持原数组的内存布局。
  • subok:默认为False,返回一个基本类型数组。如果为True,则返回子类。
  • ndmin:指定返回数组的最小维度。默认是根据列表、元组情况而定

示例

1. 列表转化ndarray对象

import numpy as np

list1 = [1, 2, 3, 4]
arr1 = np.array(list1)
print(arr1)  # 输出: [1 2 3 4]

 2. 指定数据类型

 记得有默认值

3. 多维数组

 列表有逗号,ndarray没有哦

4. 最小维度

 因为指定nmid为2,即使列表是一维也是会转化为2维的

5. 是否copy


list1 = [1, 2, 3, 4, 5]
arr5 = np.array(list1, copy=False)
print(list1)
list1[0] = 10
print(arr5) # 没有影响
print(list1)

print()

list1 = [1, 2, 3, 4, 5]
arr5 = np.array(list1, copy=True)
print(list1)
list1[0] = 10
print(arr5)
print(list1)

print()

arr6 = np.array(arr5, copy=False)
arr5[0] = 88
print(arr5)
print(arr6)

print()

print(arr6)
arr7 = np.array(arr6, copy=True)
arr6[0] = 188
print(arr6)
print(arr7)

 

 

 从测试结果看,copy属性对列表转ndarray没有影响,ndarry转ndarray有影响

 

numpy.dtype(obj, align=False, copy=False)

在NumPy中,dtype(数据类型)是一个对象,它描述了数组中元素的数据类型。每个NumPy数组都有一个dtype属性,用于定义其元素的数据类型。dtype不仅包含基本的类型信息(如floatint等),还可以描述更复杂的数据结构,比如结构化数据类型

  • obj:用于定义数据类型的对象。可以是字符串、Python类型(如float)、另一个dtype对象,或者是表示字段的字典或元组列表。
  • align:如果为True,则字段将按C语言结构体的方式进行字节对齐。
  • copy:如果为True,则创建dtype对象的副本。

 示例

1. 基本数据类型

 2. 使用字符串定义数据类型

 

 3. 更复杂的结构化数据类型

 4.使用元组定义数据类型(带有字段名)

 i1表示是1个字节的int 

f4表示是4个字节 的float

 

ChatGPT

在NumPy中,dtype(数据类型)是一个对象,它描述了数组中元素的数据类型。每个NumPy数组都有一个dtype属性,用于定义其元素的数据类型。dtype不仅包含基本的类型信息(如floatint等),还可以描述更复杂的数据结构,比如结构化数据类型。

语法 numpy.dtype(obj, align=False, copy=False)

dtype的基本语法如下:

numpy.dtype(obj, align=False, copy=False)
  • obj:用于定义数据类型的对象。可以是字符串(如'float32')、Python类型(如float)、另一个dtype对象,或者是表示字段的字典或元组列表。
  • align:如果为True,则字段将按C语言结构体的方式进行字节对齐。
  • copy:如果为True,则创建dtype对象的副本。

示例

  1. 基本数据类型

    python import numpy as np dtype_float = np.dtype(np.float32) print(dtype_float) # 输出: float32
  2. 使用字符串定义数据类型

    python dtype_int = np.dtype('int') print(dtype_int) # 输出: int32 或 int64 取决于系统
  3. 更复杂的结构化数据类型

    python dtype_complex = np.dtype([('real', np.float32), ('imag', np.float32)]) print(dtype_complex) # 输出: [('real', '<f4'), ('imag', '<f4')]
  4. 使用元组定义数据类型(带有字段名)

    python dtype_structured = np.dtype([('age', np.int8), ('height', np.float32)]) print(dtype_structured) # 输出: [('age', 'i1'), ('height', '<f4')]

最佳实践

  • 明确数据类型:在创建数组时,最好明确指定dtype,特别是在性能和精度方面有特定要求的情况下。
  • 使用结构化数据类型:当需要在数组中存储复合数据(例如表格数据)时,可以使用结构化数据类型。
  • 内存优化:根据数据的范围选择合适的数据类型,以节省内存。例如,如果数据的范围在0到255之间,使用np.uint8
  • 类型转换:了解如何在不同的数据类型之间转换,这对于处理外部数据和进行数值运算非常重要。

 

 

 

 

 

属性

dtype(数据类型)

 

1. 布尔型

  • bool_:布尔值,True 或 False。

2. 整型

  • int_:默认的整数类型(类似于C中的long;通常是int64int32)。
  • intc:C语言中的int类型,通常是int32int64
  • intp:用于索引的整数类型(类似于C中的ssize_t;通常是int32int64)。
  • int8, int16, int32, int64:分别代表8位、16位、32位、64位整数。

3. 无符号整型

  • uint8, uint16, uint32, uint64:分别代表8位、16位、32位、64位无符号整数。

4. 浮点型

  • float_:默认的浮点类型(类似于C中的double;通常是float64)。
  • float16, float32, float64:分别代表16位、32位、64位浮点数。

5. 复数型

  • complex_:默认的复数类型(类似于C中的double组成的复数;通常是complex128)。
  • complex64, complex128:分别代表由两个32位浮点数(实部和虚部)和两个64位浮点数组成的复数。

 

 

6. 对象类型

  • object_:表示Python对象类型。这种类型用于存储任意Python对象,但通常在需要数组元素为多种类型或包含复杂对象时使用。

7. 字符串类型

  • string_:表示固定长度的字符串类型,每个字符占用一个字节。例如,string_[n]表示长度为n的字符串。
  • unicode_:表示固定长度的Unicode类型(在Python 3中,等同于str类型)。例如,unicode_[n]表示长度为n的Unicode字符串。

8. 时间类型

  • datetime64:表示日期和时间的类型。
  • timedelta64:表示时间差(两个datetime64类型数据之间的差)。

9. 其他类型

  • bytes_:固定长度的字节序列。
  • void:表示空(无数据)的类型,通常用于表示结构化数组的元素。
import numpy as np

# 布尔型
arr_bool = np.array([True, False, True], dtype=np.bool_)
print(arr_bool)

# 整型
arr_int32 = np.array([1, 2, 3], dtype=np.int32)
print(arr_int32)

# 无符号整型
arr_uint8 = np.array([1, 2, 3], dtype=np.uint8)
print(arr_uint8)

# 浮点型
arr_float64 = np.array([1.0, 2.0, 3.0], dtype=np.float64)
print(arr_float64)

# 复数型
arr_complex128 = np.array([1+2j, 3+4j, 5+6j], dtype=np.complex128)
print(arr_complex128)

# 对象类型
arr_object = np.array([1, 'a', True], dtype=np.object_)
print(arr_object)

# 字符串类型
arr_string = np.array(['apple', 'banana', 'cherry'], dtype=np.string_)
print(arr_string)

# Unicode类型
arr_unicode = np.array(['apple', 'banana', 'cherry'], dtype=np.unicode_)
print(arr_unicode)


# 时间类型
arr_datetime = np.array(['2021-01-01', '2021-01-02'], dtype='datetime64')
print(arr_datetime)

# 时间差类型
arr_timedelta = np.array([np.datetime64('2021-01-01') - np.datetime64('2020-01-01')], dtype='timedelta64')
print(arr_timedelta)

# 字节类型
arr_bytes = np.array([b'abc', b'def'], dtype=np.bytes_)
print(arr_bytes)

# 创建结构化数组
arr_void = np.array([(1, 'a', 0.5)], dtype=[('x', 'i4'), ('y', 'S1'), ('z', 'f4')])
print(arr_void)

  • 明确地指定dtype可以确保数据的一致性和预期行为,尤其是在涉及数值计算时。
  • 选择合适的dtype以优化性能和内存使用。例如,对于只需要小整数的情况,使用int8uint8比默认的int64更节省内存。
  • 对于复杂计算,使用高精度的数据类型(如float64complex128)以提高计算精度,但需注意这会增加内存消耗。
  • 当处理大型数据集时,合理选择数据类型对于内存管理和性能优化至关重要
  • 使用object_类型时需谨慎,因为它会牺牲NumPy数组的许多优点,如高效的内存使用和快速的数学运算。
  • 对于文本数据,明确区分string_unicode_类型,特别是在处理非英文字符时。
  • 日期和时间数据类型,如datetime64timedelta64,非常适合处理时间序列数据。

 

ndarray

 

函数

 

属性

标签:arr,dtype,数据类型,print,003ndarray,np,array,numpy
From: https://www.cnblogs.com/allenxx/p/17892891.html

相关文章

  • numpy之002 优势
    对比通过⼀段代码运⾏来体会ndarray与Python原⽣list运算效率对⽐。importrandomimportnumpyasnpimporttime#创建包含随机数的列表a=[]foriinrange(1000000):#我减小了迭代次数以避免内存问题a.append(random.randint(1,100))#生成1到100之间的随......
  • Numpy之001 Numpy简介
    简介Numpy(NumericalPython)是⼀个开源的Python科学计算库,⽤于快速处理任意维度数组的工具。Numpy⽀持常⻅的数组和矩阵操作。对于同样的数值计算任务,使⽤Numpy⽐直接使⽤Python要简洁的多,性能好Numpy使⽤ndarray对象来处理多维数组,该对象是⼀个快速⽽灵活的⼤数据容器。 nda......
  • Python NumPy 合并数组和分割数组
    在Python的NumPy库中,合并和分割数组是两种常用的操作,用于重组和分解数据集。将多个数据集合并为一个数据集,方便进行后续的处理。将数据集拆分为多个子数据集,用于并行处理或分布式处理。将数据集按指定条件进行分组,方便进行分析。1、合并数组合并数组是一种常见操作,允许你......
  • Python NumPy 数组形状操作
    1、获取数组的形状 1、获取数组的形状要获取数组的形状,可以使用 shape 属性。文档:Pythonnumpy.shape函数方法的使用2、改变数组形状要改变数组的形状,可以使用 reshape() 方法。文档:Pythonnumpy.reshape函数方法的使用3、改变数组的大小要改变数组的大小,可以使用 r......
  • Python NumPy 数组索引和切片
    1、普通索引普通索引是指使用单个整数或整数列表来索引数组中的元素。1)单个元素索引要访问NumPy数组的单个元素,可以使用单个整数索引。索引从0开始,表示数组的第一行第一个元素。2)多维元素索引2、高级索引高级索引允许使用布尔值或数组来索引数组中的元素。1)布尔索引布......
  • Numpy数值计算Numpy 进阶在线闯关_头歌实践教学平台
    Numpy数值计算进阶第1关Numpy广播第2关Numpy高级索引第3关Numpy迭代数组第1关Numpy广播任务描述本关任务:给定两个不同形状的数组,求出他们的和。编程要求首先用arange()生成一个数组,然后用reshape()方法,将数组切换成4x3的形状,最后再与basearray相加,输出它们的和......
  • Numpy-argsort()用法和Numpy-flipud()用法
    Numpy-argsort()用法语法:np.argsort(a,axis=-1,kind='quicksort',order=None)功能:对a进行由小到大排序,并输出其索引实例:importnumpyasnptest=np.array([8,2,-2,3,9,1])new_test=np.argsort(test)print('一维数组的排序结果:{}'.format(new_test))输出结......
  • numpy 普通方法
     ndarray.ndim-数组的维度:importnumpyasnp#创建一个一维数组arr_1d=np.array([1,2,3])print("数组:",arr_1d)print("数组的维度:",arr_1d.ndim)数组:[123]数组的维度:1ndarray.shape-数组的形状(维度大小):importnumpyasnp#创建一个二......
  • numpy 统计方法
      numpy.mean()importnumpyasnpa=np.array([[1,2,3],[3,4,5],[4,5,6]])print(a)print(np.mean(a))print(np.mean(a,axis=0))print(np.mean(a,axis=1))[[123][345][456]]3.6666666666666665[2.666666673.666666674.66666667][2.4.5.]......
  • 一维的numpy和List
    就是数据类型的区别但是功能却大不一样NumPy数组提供了丰富的数学、统计和数组操作,如求和、平均值、最小值、最大值等。在二维数据,max降维。Python列表提供了一些基本的列表操作,但没有NumPy数组提供的广泛数学和科学计算功能 一维的numpy,来求平均值importnumpyasnp......