我有一个numpy的数组:
[[4907., 4907., 4907., ..., 4907., 4907., 4907.],
[4907., 4907., 4907., ..., 4907., 4907., 4907.],
[4907., 4907., 4907., ..., 4907., 4907., 4907.]]
我希望向该数组的每个元素添加一个特定数量的前导零,以便该数组如下所示:
[[0004907., 0004907., 0004907., ..., 0004907., 0004907., 0004907.],
[0004907., 0004907., 0004907., ..., 0004907., 0004907., 0004907.],
[0004907., 0004907., 0004907., ..., 0004907., 0004907., 0004907.]]
什么是最有效,最快的方法?
这是不可能的。Python解释器会自动将数字转换0004
为4
。
唯一的方法是将所有内容都转换为字符串。如果要对数组的内容进行数学运算,可以将其转换回浮点数。
arr = [
[4907., 4907., 4907.],
[4907., 4907., 4907.],
[4907., 4907., 4907.]
]
new_arr = []
for i in range(0, len(arr)):
new_arr.append([])
for j in range(0, len(arr)):
nr = arr[i][j]
new_arr[i].append(str(nr).zfill(len(str(nr)) + 3))
print(new_arr)
输出:
[['0004907.0', '0004907.0', '0004907.0'], ['0004907.0', '0004907.0', '0004907.0'], ['0004907.0', '0004907.0', '0004907.0']]
编辑:但是,如果您必须大量使用此数组,那么实现此效果的最优雅的方法是在我看来要创建一个类。这会感觉更自然,您不必每次都在字符串之间进行转换和浮动。因此也更快。
#Special class
class SpecialArray:
#Your array
arr = [
[4907., 4907., 4907.],
[4907., 4907., 4907.],
[4907., 4907., 4907.]
]
#Append leading zero's when class is initiated
def __init__(self):
temp_arr = []
for i in range(0, len(self.arr)):
temp_arr.append([])
for j in range(0, len(self.arr)):
nr = self.arr[i][j]
temp_arr[i].append(str(nr).zfill(len(str(nr)) + 3))
self.arr = temp_arr
#Print out array
def print(self):
print(self.arr)
#Get a value to to math
#If asString is true, you get back the string with leading zero's (not for math)
def get(self, x, y, asString = False):
if not asString:
return float(self.arr[x][y])
else:
return self.arr[x][y]
#TODO: Make function to append etc here
###Rest of your program
def main():
#Initiate your array
arr = SpecialArray()
#Print out whole array
arr.print()
#Output:
#[['0004907.0', '0004907.0', '0004907.0'], ['0004907.0', '0004907.0', '0004907.0'], ['0004907.0', '0004907.0', '0004907.0']]
#Print out one element
print(arr.get(1, 2, True))
#Output:
#0004907.0
#Get one element and increase by one (do math)
x = arr.get(1,2) + 1
print(x)
#Output:
#4908.0
main()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句