gpt4 book ai didi

python - 为什么 numpy 返回元组给我?

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:29 25 4
gpt4 key购买 nike

有人可以帮助我了解 numpy 吗?

在下面的代码中,我希望 col1 会给我一个形状为 (2, 3) 的数组,就像 expected_arr 一样。但显然 col1 似乎具有 (2,) 的形状。我想这意味着它是一个有两个元组的数组(而不是一个有两个数组的数组,每个数组有 3 个值。

import numpy as np
import random
from collections import deque

vals = np.array([
[[1, 2, 3], False],
[[4, 5, 6], False]
])

col1 = vals[:,0]

print(col1)
print(col1.shape)

expected_arr = np.array([[1, 2, 3], [4, 5, 6]])

print(expected_arr)
print(expected_arr.shape)

所以,我想要的是,给定 vals 结构,我想获取第一列,以便输出是形状为 (2,3)< 的数组.

有人可以帮我吗?

最佳答案

在这种情况下,数组 vals 是由一个结构构成的,该结构不能解释为基本数值类型之一的数组(即相同大小的连续 block )。从中创建数组的列表是混合类型元素的列表。

发生这种情况时,numpy 的数组构造函数会尝试创建一个 dtype 为“object”的通用数组,即只是普通的 Python对象(实际上是对它们的引用)。它非常类似于 C 中的指针数组。vals 因此是一个 2 x 2 数组,其中包含对象

the list `[1, 2, 3]` | the bool `False`
---------------------------------------
the list `[4, 5, 6]` | the bool `False`

作为内存中的行优先数组。

因为 col1 是二维数组 vals 的切片符号索引,所以你得到一个包含两个元素的一维数组,即两个 Python列表。

关于python - 为什么 numpy 返回元组给我?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com