鱼C论坛

 找回密码
 立即注册
查看: 117|回复: 3

[已解决]np数组,索引得到的一维数组

[复制链接]
发表于 2025-3-9 20:17:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import numpy as np
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
data = np.random.randn(7, 4)
names
data

输出

array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'], dtype='<U4')
array([[-0.2047,  0.4789, -0.5194, -0.5557],
       [ 1.9658,  1.3934,  0.0929,  0.2817],
       [ 0.769 ,  1.2464,  1.0072, -1.2962],
       [ 0.275 ,  0.2289,  1.3529,  0.8864],
       [-2.0016, -0.3718,  1.669 , -0.4386],
       [-0.5397,  0.477 ,  3.2489, -1.0212],
       [-0.5771,  0.1241,  0.3026,  0.5238]])

输入

data[names == 'Bob', 2:]#得到一个二维数组
data[names == 'Bob', 3]#为什么没有得到二维

输出

array([[-0.5194, -0.5557],
       [ 1.3529,  0.8864]])
array([-0.5557,  0.8864])

输入

data[names == 'Bob', [3]]  # AI提供的方法,仍然是一维

输出

array([-0.5557,  0.8864])

最佳答案
2025-3-9 20:20:42
水中有明月 发表于 2025-03-09 20:20
FishC 发表于 2025-3-9 20:17
在使用NumPy时,如果你 ...


在 NumPy 中,当你对一个二维数组进行索引操作时,索引的方式会影响到你得到的是一维数组还是二维数组。具体来说:

1. 使用单个索引:

如果你对一个二维数组使用单个索引,比如 data[2],你将会得到一个一维数组,这一维数组对应的是在第3行的所有元素。

2. 使用切片:

如果你希望得到一个二维数组,可以使用切片。例如,使用 data[2:3],你将得到一个二维数组,其中包含第三行的数据。这里 2:3 保留了二维结构。

下面是一个简单的例子来说明这两种情况:
import numpy as np

# 创建一个7行4列的随机数组
data = np.random.randn(7, 4)

# 单个索引,得到一维数组(第三行)
row_as_1d = data[2]
print("一维数组:", row_as_1d)
print("形状:", row_as_1d.shape)

# 使用切片,得到二维数组(第三行)
row_as_2d = data[2:3]
print("二维数组:", row_as_2d)
print("形状:", row_as_2d.shape)

这样处理,能够更好地控制得到的是一维还是二维数组。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2025-3-9 20:17:58 | 显示全部楼层
在使用NumPy时,如果你想创建一个数组并进行索引操作,你需要确保数组正确初始化。下面是一个简单的例子展示如何使用NumPy创建数组并进行索引:

示例代码
import numpy as np

# 创建一个包含名字的一维数组
names = np.array(['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank', 'Grace'])

# 创建一个7行4列的随机数组
data = np.random.randn(7, 4)

# 打印names和data以查看内容
print(names)
print(data)

# 示例:根据索引获取names和data中的数据
index = 2
print("Name at index 2:", names[index])
print("Data row at index 2:\n", data[index])

在这个例子中,names是一个一维数组,而data是一个二维数组。你可以通过索引来访问它们的元素。确保在定义数组时提供正确的内容,因为空的 np.array() 会导致错误。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-3-9 20:20:27 | 显示全部楼层
FishC 发表于 2025-3-9 20:17
在使用NumPy时,如果你想创建一个数组并进行索引操作,你需要确保数组正确初始化。下面是一个简单的例子展 ...

我的问题是为什么得到的是一维数组而不是二维
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-3-9 20:20:42 | 显示全部楼层    本楼为最佳答案   
水中有明月 发表于 2025-03-09 20:20
FishC 发表于 2025-3-9 20:17
在使用NumPy时,如果你 ...


在 NumPy 中,当你对一个二维数组进行索引操作时,索引的方式会影响到你得到的是一维数组还是二维数组。具体来说:

1. 使用单个索引:

如果你对一个二维数组使用单个索引,比如 data[2],你将会得到一个一维数组,这一维数组对应的是在第3行的所有元素。

2. 使用切片:

如果你希望得到一个二维数组,可以使用切片。例如,使用 data[2:3],你将得到一个二维数组,其中包含第三行的数据。这里 2:3 保留了二维结构。

下面是一个简单的例子来说明这两种情况:
import numpy as np

# 创建一个7行4列的随机数组
data = np.random.randn(7, 4)

# 单个索引,得到一维数组(第三行)
row_as_1d = data[2]
print("一维数组:", row_as_1d)
print("形状:", row_as_1d.shape)

# 使用切片,得到二维数组(第三行)
row_as_2d = data[2:3]
print("二维数组:", row_as_2d)
print("形状:", row_as_2d.shape)

这样处理,能够更好地控制得到的是一维还是二维数组。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-3 04:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表