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不仅包含基本的类型信息(如float、int等),还可以描述更复杂的数据结构,比如结构化数据类型
- obj:用于定义数据类型的对象。可以是字符串、Python类型(如
float)、另一个dtype对象,或者是表示字段的字典或元组列表。 - align:如果为
True,则字段将按C语言结构体的方式进行字节对齐。 - copy:如果为
True,则创建dtype对象的副本。
示例
1. 基本数据类型

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

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

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

i1表示是1个字节的int
f4表示是4个字节 的float
ChatGPT
属性
dtype(数据类型)

1. 布尔型
bool_:布尔值,True 或 False。
2. 整型
int_:默认的整数类型(类似于C中的long;通常是int64或int32)。intc:C语言中的int类型,通常是int32或int64。intp:用于索引的整数类型(类似于C中的ssize_t;通常是int32或int64)。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以优化性能和内存使用。例如,对于只需要小整数的情况,使用int8或uint8比默认的int64更节省内存。 - 对于复杂计算,使用高精度的数据类型(如
float64或complex128)以提高计算精度,但需注意这会增加内存消耗。 - 当处理大型数据集时,合理选择数据类型对于内存管理和性能优化至关重要
- 使用
object_类型时需谨慎,因为它会牺牲NumPy数组的许多优点,如高效的内存使用和快速的数学运算。 - 对于文本数据,明确区分
string_和unicode_类型,特别是在处理非英文字符时。 - 日期和时间数据类型,如
datetime64和timedelta64,非常适合处理时间序列数据。
ndarray
函数