Python 列表和元组
Posted
技术标签:
【中文标题】Python 列表和元组【英文标题】:Python Lists and tuples 【发布时间】:2017-12-06 20:55:23 【问题描述】:有什么区别
[439 301 481 194 208 415 147 502 333 86 544 353 229]
和
[439, 301, 481, 194, 208, 415, 147, 502, 333, 86, 544, 353, 229]
当我尝试时
sent = sent[np.newaxis,:]
在第二个数组上,它给了我以下错误:
File "Mymain.py", line 200, in <module>
sent = sent[np.newaxis,:]
TypeError: list indices must be integers or slices, not tuple
【问题讨论】:
[
... ]
不会自动为您提供 numpy
数组。 numpy
是一个 third-party 附加组件,用于以您(显然)在 Matlab 中习惯的方式处理数组。 [
... ]
本身为您提供了一个基本的 Python list
,它的技巧更少。将您的 list
转换为带有 numpy.array( [
... ])
的 numpy 数组
这显然缺乏上下文。您可以通过编写[1, 2, 3]
来定义一个列表,但[1 2 3]
不是一个有效的语法。第一行是从哪里来的?
我喜欢 python,因为错误非常易读(不仅仅是程序!)。所以你的错误说列表(sent
)索引(np.newaxis,:
)必须是整数或切片而不是元组(np.newaxis,
)。删除sent = sent[np.newaxis,:]
中的,
。假设您以正确的方式完成了其他所有操作(例如找出 np.array 和 python list 之间的区别等),它应该可以正常工作。
缺少逗号表明第一行是一个numpy数组的打印。第二个可能是一个列表。适用于数组的索引通常不适用于列表。
【参考方案1】:
问题是您正在尝试发送一个作为 python 列表的数组。首先,您需要将其转换为 nampy 数组。
import numpy as np
py_list = [439, 301, 481, 194, 208, 415, 147, 502, 333, 86, 544, 353, 229]
convert_numpy = np.array(py_list )
sent = sent[np.convert_numpy,:]
对于第一行[439 301 481 194 208 415 147 502 333 86 544 353 229]
,您需要添加逗号来分隔值。
【讨论】:
【参考方案2】:基本上就是一个numpy数组和一个python列表。
试试:
import numpy as np
a = [1,2,3]
b = np.array(a)
print(a,b)
您可以在此处找到更多信息 http://www.numpy.org/
【讨论】:
【参考方案3】:据我所知,sent[np.newaxis, :]
是一种 numpy 数组语法。
因此,您希望 sent
成为 numpy.array
,但事实并非如此。
如错误所述:list indices must be integers or slices, not tuple
、sent
是一个列表。由于np.newaxis, :
是一个元组,Python 会给你这个错误。
您需要将sent
定义为一个数组。
为此,您可以将其从列表转换为数组:
sent = np.array(sent)
【讨论】:
【参考方案4】:尝试type
来检查是什么:
a=[439, 301, 481, 194, 208, 415, 147, 502, 333, 86, 544, 353, 229]
type(a)
结果是:
<type 'list'>
使用以下方法将您的列表转换为 np.array:
import numpy as np
sent = np.array(sent)
错误就会消失。
【讨论】:
以上是关于Python 列表和元组的主要内容,如果未能解决你的问题,请参考以下文章