Python ValueError:使用numpy数组上的序列设置数组元素

Python ValueError:使用numpy数组上的序列设置数组元素,python,numpy,Python,Numpy,这是一个大数组的简单示例 x = [[[1,2,3], "abs"], [[1,2,3], "abs"]] y = np.array(x) z = y[:, 0] z.astype('int') # This will throw an error 输出 z>>Out[9]:数组([list([1,2,3]),列表([1,2,3]),数据类型=对象) 是否有任何方法可以将此对象转换为int,而无需对列表x进行迭代我搜索了您的问题并遇到了: 所以我想你可以使用矢量化的方法

这是一个大数组的简单示例

   x = [[[1,2,3], "abs"], [[1,2,3], "abs"]]
   y = np.array(x)
   z = y[:, 0]
   z.astype('int') # This will throw an error
输出

z>>Out[9]:数组([list([1,2,3]),列表([1,2,3]),数据类型=对象)


是否有任何方法可以将此对象转换为int,而无需对列表x进行迭代

我搜索了您的问题并遇到了:

所以我想你可以使用矢量化的方法:

import numpy as np
x = [[[1,2,3], "abs"], [[1,2,3], "abs"]]
y = np.array(x)
z = y[:, 0]
def f(l):
    return np.array(l)

v = np.vectorize(f, signature='()->(n)')
k = v(z)
k
表示为:

array([[1, 2, 3],
       [1, 2, 3]])

@hpaulj还建议使用
np.vstack(z)
的更简洁的方法,给出了相同的答案

根据文档,vstack的参数应该是一个“Ndarray序列”,因此我认为传递一个列表序列严格来说是不正确的,但我可以确认它确实有效


最后,如果是我的代码,我会坚持简单的列表理解,这是最简单的方法,任何解决方案都必须执行某种形式的for循环,将列表转换为ndarray,那么为什么不使用Python进行迭代呢

>>> np.array([r[0] for r in x])
array([[1, 2, 3],
       [1, 2, 3]])

我搜索了你的问题,发现:

所以我想你可以使用矢量化的方法:

import numpy as np
x = [[[1,2,3], "abs"], [[1,2,3], "abs"]]
y = np.array(x)
z = y[:, 0]
def f(l):
    return np.array(l)

v = np.vectorize(f, signature='()->(n)')
k = v(z)
k
表示为:

array([[1, 2, 3],
       [1, 2, 3]])

@hpaulj还建议使用
np.vstack(z)
的更简洁的方法,给出了相同的答案

根据文档,vstack的参数应该是一个“Ndarray序列”,因此我认为传递一个列表序列严格来说是不正确的,但我可以确认它确实有效


最后,如果是我的代码,我会坚持简单的列表理解,这是最简单的方法,任何解决方案都必须执行某种形式的for循环,将列表转换为ndarray,那么为什么不使用Python进行迭代呢

>>> np.array([r[0] for r in x])
array([[1, 2, 3],
       [1, 2, 3]])

试试
np.vstack(z)
。听起来不错。非常感谢。vstack(z)。听起来不错。非常感谢,谢谢。这两种解决方案都很酷,而且np.vstack()即使是一系列list@SACHINGURUSWAMY没问题,非常感谢。这两种解决方案都很酷,而且np.vstack()即使是一系列list@SACHINGURUSWAMY没问题。