从文本形式的记录列表创建 recarray 并在 Numpy 中设置有效的数据类型
numpyserver side programmingprogramming
要从文本形式的记录列表创建 recarray,请使用 Python Numpy 中的 numpy.core.records.fromrecords() 方法。名称使用"names"参数设置。字段名称可以指定为逗号分隔的字符串,形式为 'col1, col2, col3',也可以指定为字符串列表或元组,形式为 ['col1', 'col2', 'col3']。可以使用空列表,在这种情况下使用默认字段名称("f0"、"f1"、"…")。数据类型使用"dtype"设置参数。
第一个参数是同一字段中的数据可能是异构的 - 它们将被提升为最高数据类型。dtype 是所有数组的有效 dtype。formats、names、titles、aligned、byteorder 参数,如果 dtype 为 None,这些参数将传递给 numpy.format_parser 以构造 dtype。如果格式和 dtype 均为 None,则将自动检测格式。使用元组列表而不是列表列表可加快处理速度。
步骤
首先,导入所需的库 −
import numpy as np
使用 numpy.array() 方法创建一个新数组 −
arr1 = np.array([[7, 14, 21], [30, 37, 45]]) arr2 = np.array([[11.3, 18.7, 24], [87.5, 65, 23.8]]) arr3 = np.array([['12', 'bbb', 'john'], ['5.6', '29', 'k']])
显示数组 −
print("Array1...
",arr1) print("Array2...
",arr2) print("Array3...
",arr3)
获取数组的类型 −
print("
Array1 类型...
", arr1.dtype) print("
Array2 类型...
", arr2.dtype) print("
Array3 类型...
", arr3.dtype)
获取数组的维度 −
print("
Array1 维度...
", arr1.ndim) print("
Array2 维度...
", arr2.ndim) print("
Array3 维度...
", arr3.ndim)
要从文本形式的记录列表创建 recarray,请使用 Python Numpy 中的 numpy.core.records.fromrecords() 方法。数据类型使用"dtype"参数设置 −
print("
记录数组...
",np.core.records.fromrecords([arr1,arr2,arr3], names = 'col1, col2, col3', dtype=np.dtype(('a', np.int32), ('b', np.float32), ('c','S3' ))))
示例
import numpy as np # 使用 numpy.array() 方法创建一个新数组 arr1 = np.array([[7, 14, 21], [30, 37, 45]]) arr2 = np.array([[11.3, 18.7, 24], [87.5, 65, 23.8]]) arr3 = np.array([['12', 'bbb', 'john'], ['5.6', '29', 'k']]) # 显示数组 print("Array1...
",arr1) print("Array2...
",arr2) print("Array3...
",arr3) # 获取数组的类型 print("
Array1 类型...
", arr1.dtype) print("
Array2 类型...
", arr2.dtype) print("
Array3 类型...
", arr3.dtype) # 获取数组的维度 print("
Array1 维度...
", arr1.ndim) print("
Array2 维度...
", arr2.ndim) print("
Array3 维度...
", arr3.ndim) # 要从文本形式的记录列表创建重新数组,请使用 Python Numpy 中的 numpy.core.records.fromrecords() 方法 # 使用 "names" 参数设置名称 # 字段名称,可以指定为逗号分隔的字符串,形式为 'col1, col2, col3',也可以指定为字符串列表或元组,形式为 ['col1', 'col2', 'col3']。 # 可以使用空列表,在这种情况下使用默认字段名称 (‘f0’, ‘f1’, …)。 # 使用 "dtype" 设置数据类型范围 print("
记录数组...
",np.core.records.fromrecords([arr1,arr2,arr3], names = 'col1, col2, col3', dtype=np.dtype(('a', np.int32), ('b', np.float32), ('c','S3'))))
输出
数组1... [[ 7 14 21] [30 37 45]] 数组2... [[11.3 18.7 24。] [87.5 65。 23.8]] Array3... [['12' 'bbb' 'john'] ['5.6' '29' 'k']] Array1 类型... int64 Array2 类型... float64 Array3 类型... <U4 Array1 维度... 2 Array2 维度... 2 Array3 维度... 2 记录数组... [[[b'\x07\x00\x00\x00' b'\x0E\x00\x00\x00' b'\x15\x00\x00\x00'] [b'\x1E\x00\x00\x00' b'\x25\x00\x00\x00' b'\x2D\x00\x00\x00']] [[b'\x9A\x99\x99\x99' b'\x33\x33\x33\x33' b'\x00\x00\x00\x00'] [b'\x00\x00\x00\x00' b'\x00\x00\x00\x00' b'\xCD\xCC\xCC\xCC']] [[b'\x31\x00\x00\x00' b'\x62\x00\x00\x00' b'\x6A\x00\x00\x00'] [b'\x35\x00\x00\x00' b'\x32\x00\x00\x00' b'\x6B\x00\x00\x00']]]