如何解决如何使用混合数据类型数组保留数据类型?
我有一个数组,其初始化为empty
数组。在数组内部,将有一些值为integer
,而另一些为floats
。在for
循环之后,所有输出都是floats
(科学计数法),而不管先前的数据是否为integer
。我需要整数来保持整数。
for
周期如下所示:
arr = np.empty(arr_size)
co_point = np.uint8(arr_size[1]/2)
for k in range(arr_size[0]):
p1_idx = int(k%np.array(first_list).shape[0])
p2_idx = int((k+1)%np.array(first_list).shape[0])
arr[k,0:co_point] = first_list[p1_idx][0:co_point]
arr[k,co_point:] = first_list[p2_idx][co_point:]
first_list
是一个包含数字的其他列表的列表。
例如,其输出为:
>>arr
array([[1.0e+02,1.0e-05,1.0e-02,3.0e-01,3.2e+01]])
所需的输出是这样的:
>>arr
array([[100,0.001,0.3,32]])
我该如何实现?
解决方法
我做了一个解决问题的办法,但我确定会有更好或更理想的答案。我将在这里与有类似问题的任何人分享。
原始代码是这样的:
arr = np.empty(arr_size)
co_point = np.uint8(arr_size[1]/2)
for k in range(arr_size[0]):
p1_idx = int(k%np.array(first_list).shape[0])
p2_idx = int((k+1)%np.array(first_list).shape[0])
arr[k,0:co_point] = first_list[p1_idx][0:co_point]
arr[k,co_point:] = first_list[p2_idx][co_point:]
我添加了一个与arr array
相同维度的附加数组,该数组仅包含first_list
list
的数据类型。
dtypes = np.empty(arr_size,dtype=type)
for x in range(arr_size[0]):
for y in range(arr_size[1]):
dtypes[x,y]=type(first_list[x][y])
然后,当循环结束时,我需要将arr的值重铸为first_list
的原始类型,但是由于arr
强制使用了数据类型,因此我创建了一个带有辅助列表的新列表附加所有值。
r_arr = []
for x in range(arr_size[0]):
aux = []
for y in range(arr_size[1]):
aux.append(dtypes[x,y](arr[x,y]))
r_arr.append(aux)
诀窍是,拥有一个存储dtype=type
数据类型的数组,可以使您实际执行dtypes[x,y])
的方式与执行type(1.13)
相同。
希望它清晰可见,您会发现它有用!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。