我在python中有一个大的嵌套列表,列表中的一些元素是numpy数组。其结构如下:
listExample[x][y][z] = an integer
listExample[x][y] = a numpy array
x,y和z有很多种组合。我想将列表数组中的所有整数(所有这些都在list[x][y][z]
中)除以100。
列表/数组的示例结构:
listExample[
[
[ [100, 200, 300], [230, 133, 234] ],
[ [234, 232, 523], [231, 234, 554] ]
],
[
[ [701, 704, 204], [331, 833, 634] ],
[ [734, 632, 523], [131, 434, 154] ]
]
]
我正在尝试为上面的列表示例生成这样的输出:
listExample[
[
[ [1, 2, 3], [2.3, 1.33, 2.34] ],
[ [2.34, 2.32, 5.23], [2.31, 2.34, 5.54] ]
],
[
[ [7.01, 7.04, 2.04], [3.31, 8.33, 6.34] ],
[ [7.34, 6.32, 5.23], [1.31, 4.34, 1.54] ]
]
]
我在上面的示例输入和输出中使用了缩进,以便更容易读取多维数组。
StackOverflow上的其他问题用整数使用numpy或类似的东西划分列表:
listExample = [i/100 for i in listExample]
但这不起作用,因为这是一个嵌套数组。它会吐出这个错误:
TypeError: unsupported operand type(s) for /: 'list' and 'int'
那么,我该如何将数组/列表中的每个整数除以100?
答案 0 :(得分:0)
遍历列表,除以等于numpy
数组。
loloa = [[np.array([1,2]), np.array([3,4])],[np.array([5,6])]]
for loa in loloa:
for i in range(len(loa)):
loa[i] = loa[i]/100
print(loloa)
答案 1 :(得分:0)
您可以使用NumPy的除方法:
import numpy as np
arr1 = [
[
[ [100, 200, 300], [230, 133, 234] ],
[ [234, 232, 523], [231, 234, 554] ]
],
[
[ [701, 704, 204], [331, 833, 634] ],
[ [734, 632, 523], [131, 434, 154] ]
]
]
out = np.divide(arr1, 100)
print(out)
输出:
[[[[1. 2. 3. ]
[2.3 1.33 2.34]]
[[2.34 2.32 5.23]
[2.31 2.34 5.54]]]
[[[7.01 7.04 2.04]
[3.31 8.33 6.34]]
[[7.34 6.32 5.23]
[1.31 4.34 1.54]]]]
答案 2 :(得分:-1)
如果您愿意使用第三方库,则可以使用numpy
作为矢量化解决方案:
<强>设置强>
import numpy as np
lst = [
[
[ [100, 200, 300], [230, 133, 234] ],
[ [234, 232, 523], [231, 234, 554] ]
],
[
[ [701, 704, 204], [331, 833, 634] ],
[ [734, 632, 523], [131, 434, 154] ]
]
]
<强>解决方案强>
res = np.array(lst)/100
array([[[[ 1. , 2. , 3. ],
[ 2.3 , 1.33, 2.34]],
[[ 2.34, 2.32, 5.23],
[ 2.31, 2.34, 5.54]]],
[[[ 7.01, 7.04, 2.04],
[ 3.31, 8.33, 6.34]],
[[ 7.34, 6.32, 5.23],
[ 1.31, 4.34, 1.54]]]])