我有一个数组,其初始化为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, 1.0e-05, 0.001, 0.3, 32]])
我该如何实现?
答案 0 :(得分:0)
我做了一个解决问题的办法,但我确定会有更好或更理想的答案。我将在这里与有类似问题的任何人分享。
原始代码是这样的:
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](arr[x,y])
的方式与执行type(1.13)
相同。
希望它清晰可见,您会发现它有用!