相关疑难解决方法(0)

将列表的numpy数组转换为numpy数组

我有一些数据用numpy数组存储dtype=object,我想提取列表的一列并将其转换为numpy数组。看来这是一个简单的问题,但是我发现解决此问题的唯一方法是将整个对象重铸为列表列表,然后将其重铸为numpy数组。还有更Python化的方法吗?

import numpy as np

arr = np.array([[1, ['a', 'b', 'c']], [2, ['a', 'b', 'c']]], dtype=object)
arr = arr[:, 1]

print(arr)
# [['a', 'b', 'c'] ['a', 'b', 'c']]

type(arr)
# numpy.ndarray
type(arr[0])
# list

arr.shape
# (2,)
Run Code Online (Sandbox Code Playgroud)

将数组重铸为dtype=str会引发一个,ValueError因为它试图将每个列表转换为一个字符串。

arr.astype(str)
# ValueError: setting an array element with a sequence
Run Code Online (Sandbox Code Playgroud)

可以将整个数组重建为列表列表,然后将其强制转换为numpy数组,但这似乎是一种回旋方式。

arr_2 = np.array(list(arr))

type(arr_2)
# numpy.ndarray
type(arr_2[0])
# numpy.ndarray

arr_2.shape
# (2, 3)
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

python arrays numpy type-conversion

5
推荐指数
2
解决办法
2037
查看次数

将3D列表转换为3D NumPy数组

目前,我有一个锯齿状数组格式的3D Python列表。
A = [[[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0], [0], [0]]]

为了使用某些NumPy数组运算符(例如向每个元素添加数字),有什么方法可以将此列表转换为NumPy数组。
A + 4会给[[[4, 4, 4], [4, 4, 4], [4, 4, 4]], [[4], [4], [4]]]

B = numpy.array(A)然后分配并尝试B + 4引发类型错误。
TypeError: can only concatenate list (not "float") to list

是否可以从锯齿状的Python列表转换为NumPy数组,同时保留结构(我稍后需要将其转换回)还是在这种情况下循环遍历数组并添加所需的更好的解决方案?

python numpy list python-3.x

5
推荐指数
1
解决办法
4227
查看次数

标签 统计

numpy ×2

python ×2

arrays ×1

list ×1

python-3.x ×1

type-conversion ×1