如何使用另一个数组作为参考来填充一个数组为0(或NaN)?

huangapple go评论84阅读模式
英文:

How do I fill an array with 0 (or Nan) using other array as a reference?

问题

我有一个像这样的数组:

array(['ENST00000003084', 'ENST00000426809', 'ENST00000454343'],
['ENST00000003084', 'ENST00000426809', 'ENST00000446805', 'ENST00000454343'],
['ENST00000003084', 'ENST00000454343'],
['ENST00000003084', 'ENST00000426809', 'ENST00000454343', 'ENST00000600166'])

但我想让它们都遵循相同的参考,因为它们必须保持这个顺序:

array(['ENST00000003084', 'ENST00000426809', 'ENST00000446805',
       'ENST00000454343', 'ENST00000468795', 'ENST00000600166'])

我不只是想在末尾填充零,我想根据参考数组填充缺失的值,使它们最终都有6个元素。

例如,对于数组

['ENST00000003084', 'ENST00000426809', 'ENST00000454343']

最终输出应该是:

['ENST00000003084', 'ENST00000426809', 0, 'ENST00000454343', 0, 0]
英文:

I have an array like this:

array(['ENST00000003084', 'ENST00000426809', 'ENST00000454343'], 
['ENST00000003084', 'ENST00000426809', 'ENST00000446805', 'ENST00000454343'], 
['ENST00000003084', 'ENST00000454343'],
['ENST00000003084', 'ENST00000426809', 'ENST00000454343', 'ENST00000600166'])

but I want to all follow the same reference, because they have to maintain this order:

array(['ENST00000003084', 'ENST00000426809', 'ENST00000446805',
       'ENST00000454343', 'ENST00000468795', 'ENST00000600166'])

I don't want just to complete with zeros in the end, I want to fill with 0 the missing values according to the reference array, so they all end up with 6 elements

For example, for the array

['ENST00000003084', 'ENST00000426809', 'ENST00000454343']

the final output should be:

['ENST00000003084', 'ENST00000426809',0, 'ENST00000454343', 0, 0]

答案1

得分: 0

这应该解决了你的问题。

ref = np.array(['ENST00000003084', 'ENST00000426809', 'ENST00000446805',
       'ENST00000454343', 'ENST00000468795', 'ENST00000600166'])
a = np.array(['ENST00000003084', 'ENST00000426809', 'ENST00000454343'])
b = [ref[k] if ref[k] in a else 0 for k in range(len(ref))]

这个示例的输出是

['ENST00000003084', 'ENST00000426809', 0, 'ENST00000454343', 0, 0]
英文:

this should solve your problem.

ref = np.array(['ENST00000003084', 'ENST00000426809', 'ENST00000446805',
       'ENST00000454343', 'ENST00000468795', 'ENST00000600166'])
a = np.array(['ENST00000003084', 'ENST00000426809', 'ENST00000454343'])
b = [ref[k] if ref[k] in a else 0 for k in range(len(ref))]

The output of this example is

['ENST00000003084', 'ENST00000426809', 0, 'ENST00000454343', 0, 0]

huangapple
  • 本文由 发表于 2023年7月27日 21:23:31
  • 转载请务必保留本文链接:https://go.coder-hub.com/76780208.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定