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)