我有一些代码,旨在将三维列表转换为数组。从技术上讲,它的工作原理是我得到了一个三维数组,但是索引只在我不遍历其中一个维度时才起作用,如果我遍历了就不起作用。你知道吗
索引在这里起作用:
listTempAllDays = []
for j in listGPSDays:
listTempDay = []
for i in listGPSDays[0]:
arrayDay = np.array(i)
listTempDay.append(arrayDay)
arrayTemp = np.array(listTempDay)
listTempAllDays.append(arrayTemp)
arrayGPSDays = np.array(listTempAllDays)
print(arrayGPSDays[0,0,0])
这里不行:
listTempAllDays = []
for j in listGPSDays:
listTempDay = []
for i in j:
arrayDay = np.array(i)
listTempDay.append(arrayDay)
arrayTemp = np.array(listTempDay)
listTempAllDays.append(arrayTemp)
arrayGPSDays = np.array(listTempAllDays)
print(arrayGPSDays[0,0,0])
这两段代码的区别在于内部for循环。第一段代码也适用于listGPSDays
(例如for i in listGPSDays[1]:
等)中的所有元素。你知道吗
删除最后的print调用允许代码在第二种情况下运行,或者将最后一行更改为print(arrayGPSDays[0][0,0])
也会运行。你知道吗
在这两种情况下,在所有级别检查类型都会返回<class 'numpy.ndarray'>
。你知道吗
我希望这个数组索引工作,如果可能的话-我遗漏了什么?你知道吗
以下是示例数据:
使用第一段代码生成的print(arrayGPSDays[0:2,0:2,0:2])
匿名结果(这样索引就可以工作了!-但也导致arrayGPSDays[0]
与arrayGPSDays[1]
相同:
[[['1' '2']
['3' '4']]
[['1' '2']
['3' '4']]]
numpy
的array
构造函数可以处理任意维数的iterables。它们唯一的规定是它们不能是锯齿状的(即每个维度中的每个“行”必须具有相同的长度)。你知道吗举个例子:
如果数组是锯齿状的,
numpy
将“挤压”到发生锯齿状的维度。既然这种解释很清楚,举个例子也许会有帮助:构造函数不是开箱即用的原因是您有一个锯齿状数组。
numpy
根本不支持锯齿数组,因为每个numpy
数组都有一个定义良好的shape
表示每个维度的长度。因此,如果给定维度中的项的长度不同,那么这种抽象就会分崩离析,numpy
根本不允许这样做。你知道吗嗯。你知道吗
Isaac,你的代码有语法错误
在您的
for
语句中,j
表示列表listGPSDays
(我假设它是一个列表)中的一个项,而不是列表中的项索引,您不需要“获取”列表的范围,python可以自己做,请尝试:而不是
另外,请尝试将这行代码更改为:
收件人:
我想它会解决你的问题,希望它能起作用!你知道吗
相关问题 更多 >
编程相关推荐