鱼C论坛

 找回密码
 立即注册
查看: 93|回复: 6

疑问

[复制链接]
发表于 2024-5-14 21:37:01 | 显示全部楼层 |阅读模式

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

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

x
corr = np.corrcoef(estimated_concentrations, observed_concentrations)[0, 1]这个最后的[0,1]的提取元素是不是有语法错误?@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-5-14 21:37:06 | 显示全部楼层
不,这里的[0, 1]是正确的语法。np.corrcoef()函数返回一个相关系数矩阵,其中包含了每对变量之间的相关性。在这个矩阵中,[0, 1]表示第一行第二列的元素,也就是estimated_concentrations和observed_concentrations之间的相关系数。

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

使用道具 举报

 楼主| 发表于 2024-5-14 21:39:08 | 显示全部楼层
corr = np.corrcoef(estimated_concentrations, observed_concentrations)[0, 1]这个最后的[0,1]的提取元素没有有语法错误
如果t = [[1, 1, 0], [1, 2, 0]]
t[0,1]为什么会报错?@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-14 21:39:19 | 显示全部楼层
亦又 发表于 2024-05-14 21:39
corr = np.corrcoef(estimated_concentrations, obser ...


t[0, 1]报错的原因是因为t是一个列表(list),而不是一个二维数组(numpy中的ndarray)。在列表中使用索引时,需要使用方括号[]进行索引,而不是中括号()。所以正确的写法应该是t[0][1]。以下是一个例子:

  1. t = [[1, 1, 0], [1, 2, 0]]
  2. print(t[0][1])  # 输出结果为1
复制代码


在这个例子中,t表示一个包含两个子列表的列表。要访问子列表中的元素,需要用第一个索引选择子列表,然后用第二个索引选择子列表中的元素。所以t[0][1]表示访问t列表中的第一个子列表的第二个元素,即1。

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

使用道具 举报

 楼主| 发表于 2024-5-14 21:44:02 | 显示全部楼层
什么是(numpy中的ndarray)二维数组?
其与二维列表的有什么区别?@FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-14 21:45:09 | 显示全部楼层
亦又 发表于 2024-05-14 21:44
什么是(numpy中的ndarray)二维数组?
其与二维列表 ...


numpy中的ndarray是一个多维数组对象,其中最常见的就是二维数组。二维数组由行和列组成,类似于一个表格或者矩阵。

与二维列表相比,二维数组有以下几个区别:

1. 数据类型:二维数组中的元素必须具有相同的数据类型,而二维列表可以包含不同类型的元素。

2. 内存占用:由于二维数组中的元素类型一致,所以可以使用连续的内存块来存储,因此二维数组的内存占用较小,操作速度较快。而二维列表中的元素类型可以不同,每个元素可能占用不同大小的内存,所以它的内存占用较大,操作速度较慢。

3. 数学运算:numpy库提供了丰富的数学函数和运算符,可以对整个二维数组进行高效的数值计算,如矩阵乘法、对角线提取等。而二维列表则需要通过迭代器来进行遍历和计算。

这是一个创建二维数组的例子:

  1. import numpy as np

  2. # 创建一个二维数组
  3. arr = np.array([[1, 2, 3], [4, 5, 6]])

  4. print(arr)
  5. print(type(arr))
  6. print(arr.shape)
复制代码


输出结果:
  1. [[1 2 3]
  2. [4 5 6]]
  3. <class 'numpy.ndarray'>
  4. (2, 3)
复制代码


在上面的代码中,我们使用np.array()函数创建了一个二维数组,并打印了数组的内容、类型和形状。

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

使用道具 举报

发表于 2024-5-14 22:40:52 | 显示全部楼层
本帖最后由 isdkz 于 2024-5-14 22:42 编辑

首先传入的索引不对抛出的错误并不是语法错误,而是类型错误

>>> t = [[1, 1, 0], [1, 2, 0]]
>>> t[0, 1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers or slices, not tuple


至于对象能接收什么样的索引是由 __getitem__ 方法决定的,

例子:
>>> class List(list):
...     def __getitem__(self, y):
...         if isinstance(y, int) or isinstance(y, slice):
...             return super().__getitem__(y)
...         elif isinstance(y, tuple) or isinstance(y, list):
...             return [self[i] for i in y]
...         else:
...             raise TypeError(f"List indices must be integers or slices or tuple or list, not {type(y)}")
...
>>> t = List([1, 2, 3, 4, 5, 6])
>>> t
[1, 2, 3, 4, 5, 6]
>>> t[1]
2
>>> t[1: 4]
[2, 3, 4]
>>> t[1, 4]
[2, 5]
>>> t[{1, 2}]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 8, in __getitem__
TypeError: List indices must be integers or slices or tuple or list, not <class 'set'>
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-31 05:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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