numpy.asarray
numpy.asarray(a, dtype=None, order=None) [source]
将输入转换为数组。
参数: | a :array_like 输入数据,可以转换为数组的任何形式。 这包括列表,元组列表,元组,元组元组, 列表元组和ndarray。 dtype : 默认情况下, order : 是使用行-主格式(C-style)还是列-主格式(Fortran-style)内存表示。 默认为 |
返回值: | out : 如果输入已经是dtype和order匹配的ndarray, 则不执行复制。如果a是ndarray的子类, 则返回一个基类ndarray。 |
例子
1)从列表转换为数组
import numpy as np # 输入列表 list_data = [1, 2, 3, 4, 5] # 使用 numpy.asarray 转换为数组 array_data = np.asarray(list_data) print("List:", list_data) print("Array:", array_data)
2)从元组转换为数组,并指定数据类型
import numpy as np # 输入元组 tuple_data = (1, 2, 3, 4, 5) # 使用 numpy.asarray 转换为数组,并指定数据类型为 float array_data = np.asarray(tuple_data, dtype=float) print("Tuple:", tuple_data) print("Array:", array_data)
3)处理多维数据
import numpy as np # 输入多维列表 multi_dim_list = [[1, 2, 3], [4, 5, 6]] # 使用 numpy.asarray 转换为多维数组 array_data = np.asarray(multi_dim_list) print("Multi-dimensional List:", multi_dim_list) print("Multi-dimensional Array:") print(array_data)
4)不创建副本
import numpy as np # 输入已经是一个数组 existing_array = np.array([1, 2, 3, 4, 5]) # 使用 numpy.asarray 转换,不创建副本 array_data = np.asarray(existing_array) print("Existing Array:", existing_array) print("Array Data (No Copy):", array_data) # 修改原数组,看看 array_data 是否也会改变 existing_array[0] = 10 print("Modified Existing Array:", existing_array) print("Array Data After Modification (No Copy):", array_data)
5)指定存储顺序
import numpy as np # 输入多维列表 multi_dim_list = [[1, 2, 3], [4, 5, 6]] # 使用 numpy.asarray 转换为 Fortran 风格的多维数组 array_data_F = np.asarray(multi_dim_list, order='F') print("Multi-dimensional List:", multi_dim_list) print("Array with Fortran-style order:") print(array_data_F)
6)使用示例
import numpy as np # 1. 将列表转换为数组 a = [1, 2] array_a = np.asarray(a) print("列表:", a) print("数组:", array_a) # 2. 现有数组未复制 a = np.array([1, 2]) array_a = np.asarray(a) print("\n原数组:", a) print("新数组:", array_a) print("是否为同一对象:", array_a is a) # 3. 根据 dtype 设置进行条件复制 a = np.array([1, 2], dtype=np.float32) array_a_float32 = np.asarray(a, dtype=np.float32) array_a_float64 = np.asarray(a, dtype=np.float64) print("\n原数组:", a) print("新数组 (float32):", array_a_float32) print("是否为同一对象 (float32):", array_a_float32 is a) print("新数组 (float64):", array_a_float64) print("是否为同一对象 (float64):", array_a_float64 is a) # 4. ndarray 子类未传递 is_subclass = issubclass(np.recarray, np.ndarray) print("\nnp.recarray 是 np.ndarray 的子类:", is_subclass) a = np.array([(1.0, 2), (3.0, 4)], dtype='f4,i4').view(np.recarray) array_a = np.asarray(a) array_a_any = np.asanyarray(a) print("原 recarray:", a) print("使用 np.asarray:", array_a) print("是否为同一对象 (np.asarray):", array_a is a) print("使用 np.asanyarray:", array_a_any) print("是否为同一对象 (np.asanyarray):", array_a_any is a)