我需要将一组数组的类型设置为np.ndarray
类型。由于我需要多次执行,我尝试了for
循环,在执行循环时,似乎正确地从list
转换为np.ndarray
,但一旦结束,每个数组仍然是list
类型,下面的这个区块帮助我意识到它正在发生,但我不知道它为什么会发生
那么,为什么会发生这种情况?以及如何修复它?提前感谢
import numpy as np
pos = [1,1,1]
vel = [1,1,2]
# vel = np.array([1,1,2])
accel = [1,1,3]
print('\nredefining...')
for elem in [pos,vel,accel]:
# checks if the array is of the np.ndarray class
print(type(elem))
if not isinstance(elem, np.ndarray):
elem = np.array(elem)
print(type(elem))
print('---------------------------')
print('\nafter the redefinition:')
print(type(pos))
print(type(vel))
print(type(accel))
字符串
产出:
redefining...
<class 'list'>
<class 'numpy.ndarray'>
---------------------------
<class 'list'>
<class 'numpy.ndarray'>
---------------------------
<class 'list'>
<class 'numpy.ndarray'>
---------------------------
after the redefinition:
<class 'list'>
<class 'list'>
<class 'list'>
型
3条答案
按热度按时间vcudknz31#
你不能重新赋值,你的
elem
变量在循环中的每一步都会被覆盖,原始变量保持不变。简单用途:
字符串
或者使用@jared建议的
asarray
,如果数组已经是一个数组,则避免复制数组:型
作为一个班轮:
型
或者,如果你真的想检查类型(这是不需要IMO):
型
最后一个建议,如果你有很多变量,使用容器:
型
0sgqnhkj2#
正如马克·托洛宁注意到的那样,
字符串
hec6srdp3#
这是因为你改变了“elem”的类型,它接受循环中变量的值,而不是变量本身的类型。你可以通过fe.这样做来解决这个问题:
字符串